Windows下mysql connector c++ 使用setblob后执行报错

来源:互联网 发布:nginx 根据ip分发 编辑:程序博客网 时间:2024/06/01 09:02
mysql connector c++版本:1.1.7
mysql版本:5.7.16
编译器:VS2008

class CDBBlobPacker : public streambuf
{
public:
CDBBlobPacker(char* pStrConext, uint32 nSize)
{
setg(pStrConext, pStrConext, pStrConext+nSize);
}
};

sql::Connection* m_pDBConnPtr;
sql::Driver* m_pDBDriverPtr;
sql::ResultSet* m_pDBResultPtr;
sql::PreparedStatement*   m_pDBPrepStmt;

try{
m_pDBDriverPtr = get_driver_instance();
m_pDBConnPtr = m_pDBDriverPtr->connect("tcp://127.0.0.1:3306/xxx", "root", "xxxx");
m_pDBConnPtr->setAutoCommit(true);

std::string strSql = "insert into `tb_test`(id, testblob) value(?, ?);";
m_pDBPrepStmt = m_pDBConnPtr->prepareStatement(strSql.c_str());

m_pDBPrepStmt->setInt(1, 1);

char cblob1[128] = "12345678909876543211234567890";
CDBBlobPacker packblob(cblob1, 29);
std::istream blobs(&packblob);
m_pDBPrepStmt->setBlob(2, &blobs);

m_pDBPrepStmt->executeUpdate();  //执行此报错,若不setblob则插入数据正常

}catch(sql::SQLException& e)
{
  std::cout << "SQLException:" << e.what() << " MySQL error code:" << e.getErrorCode() << std::endl;

}


解决方案:

不要使用VS2008;在VS2012上编译调试通过!


0 0
原创粉丝点击