在我的应用程序中,我将IBM DB2数据库作为存储,并且我的数据服务层已使用Node.js实现。我已使用db2.jar通过Progress给出的DataDirect方法建立了与IBM DB2 iSeries数据库的JDBC连接。当我执行任何选择查询时,从DB返回的结果是十六进制值不是我想要的正确值。 为了解决这个问题,我可以选择在每个列的查询级别使用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;"
任何帮助将不胜感激。
答案 0 :(得分:1)
可能会尝试像这样修改你的连接字符串
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"