我尝试从 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)
}
现在的问题是,当我查看QVariant
返回的类型时,query.value()
我发现它是双精度的。但是双精度值仅适用于大约 16 位而不适用于 20。例如,在选择中,值应该是 10903012224000000001 但我得到 10903012224000000000。
有没有办法告诉 QT 它应该返回哪种类型的值?一个确切的字符串值就足够了。
该方法query.value(0).toXXX
不起作用,因为它似乎以 double 值开始转换。
关于主题:我确定问题出在QT
. 当我在 Java 应用程序中使用相同的 ODBC-Driver 时,我得到了正确的值。