Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 处理ResultSet中的意外返回数据_Java_Sql_Db2 - Fatal编程技术网

Java 处理ResultSet中的意外返回数据

Java 处理ResultSet中的意外返回数据,java,sql,db2,Java,Sql,Db2,我正在使用一个旧的AS/400应用程序,它使用DB2作为底层数据库 我正在做一些选择,以获取数据。有一个名为OHOREF的字段,意思是Order Header Order Reference。。。即,它是给定订单的订单号参考号。我们使用此链接将网站订单链接到供应商应用程序生成的订单号。在《供应商数据库指南》中,此字段列为: | Field | Type | Length | Dec | Req. | Text |

我正在使用一个旧的AS/400应用程序,它使用DB2作为底层数据库

我正在做一些
选择
,以获取数据。有一个名为
OHOREF
的字段,意思是
Order Header Order Reference
。。。即,它是给定订单的订单号参考号。我们使用此链接将网站订单链接到供应商应用程序生成的订单号。在《供应商数据库指南》中,此字段列为:

|  Field | Type | Length | Dec | Req. |                   Text                    |   
+--------+------+--------+-----+------+-------------------------------------------+
| OHOREF |  A   |   15   |     |      | Customer/Suppliers Order Number Reference |
这似乎表明此字段存储为整数值,限制为不超过15位,不允许使用小数点。比如说:123456789012345

这个供应商是非常无助的,试图“保护”他们的“IP”,并没有提供比我更好的文档。(叹气)

我面临的问题是,在使用时:

int ohoref = resultSet.getInt(columnNumber);
我发现,当没有参考号时,此列不是空的,而是用填充空格max
”。所以,就像
。这将导致引发
数据类型不匹配
异常。我不知道上表中“A”
字段类型是什么意思,我认为它对供应商有特殊意义


除了选择所有内容作为
字符串
,没有比这更优雅的解决方案了吗?这看起来很糟糕,使得代码不得不到处进行手动转换,增加了出错和/或在其他地方引起问题的潜在风险。类型
A
是字符串还是
整数

不知道这是否有用,但请尝试一下

您可以使用以下方法获取与该列相关的
InputStream
对象

   rs.getAsciiStream(columnNumber)
   rs.getCharacterStream(columnNumber)

我不知道这是否有帮助但试试看

您可以使用以下方法获取与该列相关的
InputStream
对象

   rs.getAsciiStream(columnNumber)
   rs.getCharacterStream(columnNumber)

我不知道这是否有帮助但试试看

您可以使用以下方法获取与该列相关的
InputStream
对象

   rs.getAsciiStream(columnNumber)
   rs.getCharacterStream(columnNumber)

我不知道这是否有帮助但试试看

您可以使用以下方法获取与该列相关的
InputStream
对象

   rs.getAsciiStream(columnNumber)
   rs.getCharacterStream(columnNumber)

很难说供应商所说的
A
数据类型是什么意思,但一般来说,我希望看到整数列的
I
A
很可能代表“字母数字”,它实际上不是一种数据类型,而是内容描述,其数据类型为
CHAR(15)
(基于空值包含15个空格的事实)


为了确定您可以从
java.sql.ResultSetMetaData

中找到实际的数据类型,很难说您的供应商所说的
A
数据类型是什么意思,但一般来说,我希望看到整数列的
I
A
很可能代表“字母数字”,它实际上不是一种数据类型,而是内容描述,其数据类型为
CHAR(15)
(基于空值包含15个空格的事实)


为了确定您可以从
java.sql.ResultSetMetaData

中找到实际的数据类型,很难说您的供应商所说的
A
数据类型是什么意思,但一般来说,我希望看到整数列的
I
A
很可能代表“字母数字”,它实际上不是一种数据类型,而是内容描述,其数据类型为
CHAR(15)
(基于空值包含15个空格的事实)


为了确定您可以从
java.sql.ResultSetMetaData

中找到实际的数据类型,很难说您的供应商所说的
A
数据类型是什么意思,但一般来说,我希望看到整数列的
I
A
很可能代表“字母数字”,它实际上不是一种数据类型,而是内容描述,其数据类型为
CHAR(15)
(基于空值包含15个空格的事实)


为了确定您可以从
java.sql.ResultSetMetaData

中找到实际的数据类型,您可以跳过这一列吗?它被使用了吗?您可以将其视为varchar吗?不能跳过它,因为大约80%的订单填充了此字段,而20%的订单没有填充此字段。所以它在运行时之前是未知的。现在我在想这件事。。。我想我可以将
ohoref
改为键入
Integer
,而不是
int
,这样我就可以
捕获
异常
,然后什么也不做,有效地使
ohoref
未初始化,因此
null
,这比填充空格更可取。。。但仍然感觉有点黑客味……问题不在于它设置了多少,而在于它在代码中使用了多少?如果只是用空格填充,就没有多大价值。看起来像是填充物。您应该查看使用本专栏的代码,并找出是否值得关注。可能是一些没用过的遗物吗?我想你可以跳过只有空格的值。我不确定你说的“经常”是什么意思,就像代码对数字或其他东西进行数学运算一样?。。。这段代码将这些值从DB2中取出(使用ohoref作为唯一标识符之一),并进行一些逻辑处理,然后最终将这些值放入mysql数据库?它被使用了吗?您可以将其视为varchar吗?不能跳过它,因为大约80%的订单填充了此字段,而20%的订单没有填充此字段。所以它在运行时之前是未知的。现在我在想这件事。。。我想我可以将
ohoref
改为键入
Integer
而不是
int
,这样我就可以
捕获
异常
,然后什么也不做,有效地使
ohoref
处于初始状态