我用odcb API向oracle数据库中插入blob字段,主要代码如下:retcode = SQLBindParameter(m_hStmt, 1, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_LONGVARBINARY, 0, 0, (SQLPOINTER)1, 0, &type);
if ( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) )
{
return -1;
}
type = SQL_LEN_DATA_AT_EXEC(0);
retcode = SQLExecute(m_hStmt);
SQLPOINTER sp;
int nDataLength = 4000;
retcode = SQLParamData(m_hStmt, &sp);
retcode = SQLPutData(m_hStmt, (SQLPOINTER)(pData), nDataLength);
retcode = SQLParamData(m_hStmt, &sp);
if ( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) )
{
return -1;
}
其中pData为char * pData = new char[30000],保存blob字段的2进制数据
当nDataLength 不大于4000的时候,能插入成功,但是当nDataLength 大于4000的时候就插入不成功,我在网上看的有的说可以分多次插入,请问分多次怎么插入啊,我测试的时候多次加起来的总长度超过4000也是不行的, 刚用odbc不长时间,请大神不吝赐教,谢了!!!
if ( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) )
{
return -1;
}
type = SQL_LEN_DATA_AT_EXEC(0);
retcode = SQLExecute(m_hStmt);
SQLPOINTER sp;
int nDataLength = 4000;
retcode = SQLParamData(m_hStmt, &sp);
retcode = SQLPutData(m_hStmt, (SQLPOINTER)(pData), nDataLength);
retcode = SQLParamData(m_hStmt, &sp);
if ( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) )
{
return -1;
}
其中pData为char * pData = new char[30000],保存blob字段的2进制数据
当nDataLength 不大于4000的时候,能插入成功,但是当nDataLength 大于4000的时候就插入不成功,我在网上看的有的说可以分多次插入,请问分多次怎么插入啊,我测试的时候多次加起来的总长度超过4000也是不行的, 刚用odbc不长时间,请大神不吝赐教,谢了!!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货