在我的应用程序中,我将 IBM DB2 数据库用作存储,并且我的数据服务层已使用 Node.js 实现。我已经使用 db2.jar 通过 Progress 给出的 DataDirect 方法建立了与 IBM DB2 iSeries 数据库的 JDBC 连接。当我执行任何选择查询时,从数据库返回的结果是一个十六进制值,这不是我想要的。 为了解决这个问题,我可以选择在查询级别对每一列使用 CAST 函数,但这效率不高,因为我必须在每一列中应用这个 CAST,所以我试图在连接级别有一个通用的解决方案,这样我不必像 JTOpen 中的“translate binary =true”一样在每一列中应用此转换。
下面是选择查询的结果-
Without CAST function :
Query = SELECT poMast.ORDNO from AMFLIBL.POMAST AS poMast WHERE poMast.ORDNO = 'P544901'
Result in Hex format = D7F5F4F4F9F0F1
With CAST function :
Query = SELECT CAST(poMast.ORDNO CHAR(7) CCSID 37) AS ORDNO from AMFLIBL.POMAST AS poMast WHERE poMast.ORDNO IS NOT NULL
Result in proper format = P544901
Connection URL = "jdbc:datadirect:db2://hostname:port;DatabaseName=dbname;"
我们将不胜感激。
最佳答案
可能会尝试像这样修改您的连接字符串
Connection URL = "jdbc:datadirect:db2://hostname:port;DatabaseName=dbname;translate binary=true;ccsid=37"
或者像这样
Connection URL = "jdbc:db2://hostname:port;DatabaseName=dbname;translate binary=true;ccsid=37"
关于java - 如何在不使用 CAST 函数的情况下在连接级别以正确的格式 (CCSID 37) 转换 IBM DB2 十六进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40780326/