【发布时间】:2017-05-30 15:20:10
【问题描述】:
我正在开发一个新的 Java 应用程序,该应用程序适用于 db2 中无法更改的旧数据库。在其中一张表中有 char(32) 列,其中包含 comp3 字符。
我们使用 ibm db2 jdbc type 4 驱动程序阅读本专栏。当我们检查字节解包字符时,我们发现只要 bbdd 中有一个值为 25 的字节,jdbc 驱动程序就会将其恢复为值 15。值为 15 的字节也恢复为 15 值,所以我们有一个我们不知道如何解决的模棱两可的值。
阅读 ibm 文档,似乎读取字符串会将它们从 ebcdic 转换为 ascii/unicode,这似乎是问题的根源。
¿ 有没有办法在不进行这种转换的情况下恢复字段的真实字节?
请注意 resultSet.getBinaryStream() 不起作用,因为它是一个 char 列,我们不能以任何方式更改数据库。我们只能影响到jdbc连接和java代码。
【问题讨论】:
-
作为查询的一部分,或许可以尝试将
CASTchar(32) 列转换为某种兼容类型,以便能够使用 getBinaryStream()。 -
COMP-3 映射到 SQL
DECIMAL数据类型,而后者应由 JDBC 驱动程序自动转换为java.math.BigDecimal-- 只需使用resultSet.getBigDecimal()