小编use*_*606的帖子

QT SQL数据类型(QVariant)映射为任意长度的BINARY类型

我有一个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)

c++ sql-server qt qvariant qsqlquery

6
推荐指数
1
解决办法
313
查看次数

标签 统计

c++ ×1

qsqlquery ×1

qt ×1

qvariant ×1

sql-server ×1