我有一个SQL查询(调用存储过程到MSSQL),它采用任意长度的BINARY类型作为参数.我正在使用QT对存储过程的支持.但根据这个,对于VARBINARY为ODBC没有相应的QT类型.QT需要一种在将参数传递给sql查询时可以转换为QVariant的类型.
对于长度以字节为单位的二进制类型<= 8,我使用了quint64,它没有抱怨.
但是,对于任意长度的varbinary,如果我使用QString,我会收到此错误:
QODBCResult :: exec:无法执行语句:"[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]不允许从数据类型nvarchar到二进制的隐式转换.使用CONVERT函数运行此查询.
如果我使用QByteArray,我会收到此错误:
QODBCResult :: exec:无法执行语句:"[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]无效参数79(''):数据类型0x22是不推荐使用的大对象或LOB,但标记为输出参数.不支持不推荐使用的类型作为输出参数.请改用当前的大对象类型."
如果有人有任何建议会很好.
@a binary(2) = NULL,
@b binary(5) = NULL,
@c binary(3) = NULL,
@d binary(3) = NULL,
@e binary(8) = NULL,
@f binary(32) = NULL,
QSqlQuery query(QSqlDatabase::database(dbname));
setQueryStatement(queryString);
prepareQuery(query);
query.bindValue(":f",/* what datatype variable should i put here */);
query.exec();
Run Code Online (Sandbox Code Playgroud)