gpt4 book ai didi

c++ - 将 SQLFetch() 与 SQL_C_FLOAT 一起使用时出现 "Numeric value out of range"错误

转载 作者:行者123 更新时间:2023-11-28 08:19:51 27 4
gpt4 key购买 nike

我有 2 台电脑。

第一个 (A) 安装了 Windows Server 2003 和 SQL Server 2000。此计算机上存在一个数据库。此数据库已添加到具有 SQLServer 驱动程序版本 - 2000.85.1022 的 ODBC 数据源。

第二个 (B) 使用 Windows 7 64 位。来自计算机 A 的数据库也通过 SQLServer Native Client 添加到 ODBC 数据源。驱动程序版本 - 2007.100.1600.22。

我有一个使用 ODBC 数据源连接到数据库、检索一些数据并执行计算的软件。代码如下:

wsprintf ((LPSTR)m_stmt,"select field1 from MyTable Order by field1");  

float field1Val;
SQLExecDirectEx(m_hstmt,m_stmt,SQL_NTS);
SQLBindCol(m_hstmt, 1, SQL_C_FLOAT, &field1Val, 0, &cbCustID);
m_retcode = SQLFetch(m_hstmt);

当我在计算机 A 上调用此软件时,一切正常。当我在计算机 B 上调用它时,连接执行良好,但在使用 SQLFetch() 后,我收到“数值超出范围”错误 (22003)。

field1 在数据库中声明为十进制 9(18:2)。存储的值为“0.50”

那么问题是如何让它在计算机B上运行。

数据库不是我创建的,我也不是数据库专家。所以希望你能帮助我。

谢谢。

附注当我使用 SQL_C_CHAR 获取值时,一切正常。

最佳答案

我遇到了同样的问题。

Windows 7 64 位。SQL Server 2008 64 位。

尝试在数据库中的 Decimal 字段上使用 SQL_C_DOUBLE 执行 SQLGetData。

我推测 SQL Native Client 驱动程序有问题。

在 32 位 Windows 7 上运行良好

在带有 MDAC 驱动程序的 64 位 Windows 7 上它工作正常

我最终的解决方案是安装 SQL Server 2008 R2 Native Client 驱动程序。

尽管这需要额外的可再分发,但我将改为测试和分发 SQL 2008 R2

关于c++ - 将 SQLFetch() 与 SQL_C_FLOAT 一起使用时出现 "Numeric value out of range"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6242895/

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