我用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不长时间,请大神不吝赐教,谢了!!!

解决方案 »

  1.   

    ODBC貌似最大只支持4000字节。
      

  2.   

    那多于4000个字节的能用什么办法插入到数据库呢 ,blob数据一般都不小于4000呢,有什么好的办法吗
      

  3.   

    这个不是blob的问题,好像是数据格式的问题,在其他数据库中查询该字段时转一下个格式试试, select cast([image字段] as varbinary),例如重sqlserver中查询一个字段myimage,查询的时候 select cast([myimage] as varbinary),然后在往oracle中写就可以了。我的这样解决的。