QODBC数值错误

时间:2012-08-23 10:06:22

标签: c++ sql-server database qt odbc

我尝试从Microsoft SQLServer数据库中选择数字(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)
}

现在的问题是,当我查看从QVariant返回的query.value()时,我发现它是双重的。但是双值仅适用于大约16位而不是20位。例如,在选择中,值应该是10903012224000000001但是我得到10903012224000000000。

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

query.value(0).toXXX无效的方式,因为它似乎以双值开始转换。

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

1 个答案:

答案 0 :(得分:1)

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

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

db.setNumericalPrecisionPolicy(QSql::HighPrecision);