首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QODBC的数值错误

QODBC的数值错误
EN

Stack Overflow用户
提问于 2012-08-23 18:06:22
回答 1查看 231关注 0票数 1

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

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

代码语言:javascript
复制
db = QSqlDatabase::addDatabase("QODBC", "DBConnection");
db.open();

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

现在的问题是,当我查看从query.value()返回的是哪种类型的QVariant时,我发现它是一个双精度型。但是双精度值只适用于大约16位数,而不适用于20位数。例如,在select中,值应该是10903012224000000001,但我得到了10903012224000000000。

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-24 17:15:19

嗨,我发现了一个bugreport https://bugreports.qt-project.org/browse/QTBUG-10451

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

代码语言:javascript
复制
db.setNumericalPrecisionPolicy(QSql::HighPrecision);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12089303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档