java - 如何在不使用 CAST 函数的情况下在连接级别以正确的格式 (CCSID 37) 转换 IBM DB2 十六进制数据

标签 java node.js database db2 apigee

在我的应用程序中,我将 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/

相关文章:

java - 如何从 .csv 文件向 JTable 中的列添加标题

Java小程序双缓冲闪烁

node.js - 错误 [ERR_PACKAGE_PATH_NOT_EXPORTED] : No "exports" main resolved in/app/node_modules/@babel/helper-compilation-targets/package. json

node.js - 使用 cypress.io 在 chrome 中测试 Node 应用程序

java - 根据java中的输入值准备查询

java - 如何在 WebView 中捕获链接页面加载?

json - Breeze Sequelize : get entities in the server + transaction

php - 无法从 PHP 脚本执行 mysqldump(大数据)

database - 如何找到指向 Oracle 中一条记录的外键依赖项?

mysql - 我能知道相关子查询是什么意思吗?