java - JDBC-ODBC 问题 - 当有值时 Resultset.getString() 返回 null

标签 java jdbc odbc

首先,这是我在 Windows Vista、Windows 7 和 Windows Server 2008 上遇到的问题,但在 XP 和 Server 2003 上没有。

我知道在 Windows Server 2003 和 Windows Vista 之间,Microsoft 将 MDAC(我们发布的版本 2.8)更改为 WDAC 6.0,并且我假设我的问题出在那些热腾腾的库中。

我有一个 SQL 语句:“SELECT TermStates.ActualCoeff FROM TermStates WHERE TermStates.AnalID = '000X' ORDER BY TermStates.indx ASC”,它返回单列数据,其中假设没有值可以为 Null。这些值精度很高,而且大多数都非常小(即接近于零),也可能为负值。

第一组数据值如下所示:

-1.31182339008657
4.53959374804032
8.9828426279767
-0.07429423578308
1.90497874662919
-0.966443915857118
0.169642057606282
-0.825467091179711
-0.206287563886913
-1.00269723837058
-1.30688278976707
0.236262277634983
0
0
0
0.108773852550276
0
0
0 -0.0922931225677525
0
0.217813798294512

第二组看起来像这样:

-1.63590653334839
-0.959565335083171
9.91635261365054
-0.135820145149139
-3.2385711942924
-1.1562654250619
0.174470946581009
0
0
-1.13424407912293
0
1.0795237314308
0
0
0
0.132662710394659
0
0
0
-0.0899603109525667
0
0

还有更多的数据列,它们都表现出相同的问题。如果返回的数字以“-0.0X”开头,则 results.getString() 函数将返回 null。

基本代码如下所示:

results = statement.executeQuery(sql);
if(results != null)
{
    ResultSetMetaData metaData = results.getMetaData();
    ArrayList rowList = new ArrayList();

    String colType = metaData.getColumnTypeName(1);
    Object obj = null;
    if(colType.equals("DOUBLE"))
    {
        obj = null;
        String fValue = results.getString(1);
        if(fValue != null && fValue.length() > 0)
        {
            obj = new Double(fValue);
        }
        else
        {
            obj = new Double(0.0);
        }
    }
    else
    {
        obj = results.getString(1);
    }
    rowList.add(obj);
}

有人曾经在 JDBC-ODBC 桥上见过这样的行为吗?我在这种环境下工作了很多年,没有任何问题,但这个让我难住了。是否有任何关于“-0.0X”位对齐的信息可能表明 64 和 32 位库之间存在问题?如有任何帮助,我们将不胜感激。

克里斯

最佳答案

只需使用results.getDouble(1)!

关于java - JDBC-ODBC 问题 - 当有值时 Resultset.getString() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4902307/

相关文章:

java - 如何反复绘制图像?

java - 我使用的是struts1,关于action名称

java - 如何在 eclipse java 中重用从资源管理器(在 weka 中)创建的已保存分类器

java - 显示异常原因

Excel:使用单元格值作为 SQL 查询的参数

excel - 将 Tally ERP 9 实时数据与 Excel 工作簿连接起来

java - jdbcTemplate setQueryTimeout 值类型

java - JDBC 安全吗?

java - 如何将表映射到基于 Java 的 Web 应用程序以简化数据库迁移

mysql - 无法从 Windows 和 Linux (CentOS7) 连接到我的远程 MySQL 服务器