如何在连接级别以适当的格式(CCSID 37)转换IBM DB2hex数据,而不使用CAST函数

在我的应用程序中,我使用IBM DB2数据库作为存储,而我的数据服务层已经使用Node.js实现。 通过使用db2.jar的Progress给出的DataDirect方法,我build立了与IBM DB2 iSeries数据库的JDBC连接。 当我执行任何select查询从DB返回的结果是一个hex值不是我想要的。 为了解决这个问题,我可以select在每个列的查询级别使用CAST函数,但这不是很有效,因为我必须在每列中应用这个CAST,所以我试图在连接级别有一个通用的解决scheme,就像JTOpen中的“translate binary = true”一样,不必在每一列中应用这个转换。

以下是select查询的结果 –

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;" 

任何帮助将不胜感激。

       

网上收集的解决方案 "如何在连接级别以适当的格式(CCSID 37)转换IBM DB2hex数据,而不使用CAST函数"

可能会尝试像这样修改你的连接string

 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"