C++ 无法使用ODBC驱动程序插入BLOB对象
我试图使用ODBC驱动程序将文件存储在SQL server中,存储到定义为C++ 无法使用ODBC驱动程序插入BLOB对象,c++,sql-server,odbc,C++,Sql Server,Odbc,我试图使用ODBC驱动程序将文件存储在SQL server中,存储到定义为varbinary(max)的列中,当我使用SQL server驱动程序时,我得到: 文本、ntext或图像指针值与指定的列名冲突,文本或图像列的insert/updtae未成功 当我使用本机客户端驱动程序时 字符串数据右截断 两者都是MSDN中详细记录的同一问题的症状。插入大于400kb的blob将触发此错误,是否有任何建议的修复 迁移到OleDB不是一个选项 安装在我机器上的sqlsrv32.dll是,文件版本:6.1
varbinary(max)
的列中,当我使用SQL server驱动程序时,我得到:
文本、ntext或图像指针值与指定的列名冲突,文本或图像列的insert/updtae未成功
当我使用本机客户端驱动程序时
字符串数据右截断
两者都是MSDN中详细记录的同一问题的症状。插入大于400kb的blob将触发此错误,是否有任何建议的修复
迁移到OleDB不是一个选项
安装在我机器上的
sqlsrv32.dll
是,文件版本:6.1.7601.17514最后我找到了正确的方法,
您只需在“DoFieldExchange”功能中执行以下操作:
m_rgODBCFieldInfos[6].m_nSQLType=-4
BLOB总是应该在查询的末尾找到,因此m_rgODBCFieldInfos['x']指的是您在该数组中的m_nFields-1位置,如果您有多个BLOB,您应该询问哪个是哪个
在我的案例中,此解决方案解决了两个例外: