在我的应用程序中,我使用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;"
任何帮助将不胜感激。
最佳答案
可能尝试像这样修改您的连接字符串
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"