gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 13:09:26 26 4
gpt4 key购买 nike

我有一个 SQL 查询(调用 MSSQL 的存储过程),它将任意长度的 BINARY 类型作为参数。我正在使用 QT 对存储过程的支持。但据this ,对于 ODBC 的 varbinary 没有对应的 QT 类型。
QT 需要一个类型,在向 sql 查询传递参数时可以转换为 QVariant。

对于字节长度<= 8 的二进制类型,我使用了quint64,它没有提示。

但是,对于任意长度的 varbinary,如果我使用 QString,我会收到此错误:

QODBCResult::exec: Unable to execute statement: "[Microsoft][ODBC SQL Server Driver][SQL Server]Implicit conversion from data type nvarchar to binary is not allowed. Use the CONVERT function to run this query.



如果我使用 QByteArray,则会出现此错误:

QODBCResult::exec: Unable to execute statement: "[Microsoft][ODBC SQL Server Driver][SQL Server]Invalid parameter 79 (''): Data type 0x22 is a deprecated large object, or LOB, but is marked as output parameter. Deprecated types are not supported as output parameters. Use current large object types instead."



如果有人有任何建议,那就太好了。
@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();

最佳答案

看起来 QT 不支持当前的 SQL Server 数据类型。你能改变这个过程,使它适用于二进制值的字符串表示吗?然后,您可以向它发送一个格式为“0x23ABD234”的字符串,依此类推。然后您可以在存储过程中将其更改为二进制值。

另一种选择是在 SQL Server 中创建一个包装过程。传递一个字符串,让它将值转换为二进制并调用原始过程。

或者,QT 是否有任何更新以支持当前的 SQL Server 数据类型?

关于c++ - 任意长度的 BINARY 类型的 QT SQL 数据类型 (QVariant) 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44239342/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com