gpt4 book ai didi

c++ - QODBC 数字的错误值

转载 作者:太空宇宙 更新时间:2023-11-04 12:05:56 26 4
gpt4 key购买 nike

我尝试从 Microsoft SQLServer 数据库中选择 numeric(20,0) 值。因此,我通过 ODBC 连接到 Microsoft SQL Server。我使用 SQLServer Native Client 10.0 驱动程序。

我在 QT 项目中连接和选择数据的方式如下:

db = QSqlDatabase::addDatabase("QODBC", "DBConnection");
db.open();

query.exec("SELECT * FROM TABLE")
while (query.next()) {
//Do something with query.value(0)
}

现在的问题是,当我查看从 query.value() 返回哪种类型的 QVariant 时,我发现它是一个 double 值。但是 double 值仅适用于大约 16 位数字,而不适用于 20 位数字。例如,在选择中,值应为 10903012224000000001,但我得到 10903012224000000000。

有没有办法告诉 QT 它应该返回哪种类型的值?一个确切的字符串值就足够了。

query.value(0).toXXX 的方式不起作用,因为它似乎以 double 值开始转换。

主题:我确定问题出在 QT 中。当我在 Java 应用程序中使用相同的 ODBC 驱动程序时,我得到了正确的值。

最佳答案

您好,我发现了一个错误报告 https://bugreports.qt-project.org/browse/QTBUG-10451

解决方案是将 numericalPrecisionPolicy 从 LowPrecisionDouble 设置为 HighPrecision下面的代码行是添加,然后 qVariant 是 qString,一切正常

db.setNumericalPrecisionPolicy(QSql::HighPrecision);

关于c++ - QODBC 数字的错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12089303/

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