gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:24:02 26 4
gpt4 key购买 nike

首先,这是我在 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/

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