我正在使用DB2作为底层数据库的旧AS / 400应用程序。
我正在做一些SELECT
来获取数据。有一个名为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);
我发现,当没有参考编号时,此列不为null,而是用填充空格
" "
最多填充。因此,就像" "
。这导致抛出Data type mismatch
异常。我不知道上表中的"A"
字段类型是什么,我认为它对供应商有特殊的含义。除了将所有内容都选择为
String
之外,没有其他更好的解决方案吗?这似乎很糟糕,并且使代码必须在整个地方进行手动转换,从而增加了将其弄错和/或在其他地方引起问题的潜在风险。类型A
是字符串还是Integer
? 最佳答案
很难说出您的供应商对A
数据类型的含义,但总的来说,我希望看到I
表示整数列。 A
可能代表“字母数字”,它实际上不是数据类型,而是内容描述,数据类型为CHAR(15)
(基于空值包含15个空格的事实)。
可以肯定的是,您可以从java.sql.ResultSetMetaData
中找到实际的数据类型。