首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node.js与Db2/AS400.

Node.js与Db2/AS400.
EN

Stack Overflow用户
提问于 2018-04-16 20:33:59
回答 3查看 4.5K关注 0票数 3

我们有一个与Node.js的项目,它使用ibm_db连接到DB2AS400.

问题是它返回以下错误:

代码语言:javascript
复制
[SERVER] { Error: [IBM][CLI Driver] SQL1598N  An attempt to connect to the database server failed because of a licensing problem.  SQLSTATE=42968

[SERVER]

[SERVER]   errors: [],

[SERVER]   error: '[node-odbc] SQL_ERROR',

[SERVER]   message: '[IBM][CLI Driver] SQL1598N  An attempt to connect to the database server failed because of a licensing problem.  SQLSTATE=42968\r\n',

[SERVER]   state: '42968' }

还有一种不需要许可证就可以从node,js连接到AS400的替代方法吗?

这是我们用于连接的代码:

代码语言:javascript
复制
"use strict";
var models = require("../../models/index");
var express = require("express");

var db2Route = express.Router();
const ibmdb = require("ibm_db");
//import ibm_db


const opts = [
    'DRIVER={IBM DB2 CLI DRIVER}',
    'DATABASE=*****',
    'PROTOCOL=TCPIP',
    'HOSTNAME=*****',
    'PORT=446',
    'UID=*****',
    'PWD=*****',
    'DBQ=,*USRLIBL'
];




db2Route.route("/").post((req, res) => {

    ibmdb.open(opts.join(';'), (err, conn) => {
        if (err) return console.log(err);

        conn.query("Select * from TBFR0F" ,(err, data) =>{
            if (err) console.log(err);
            else console.log(data);
            conn.close(() => console.log('done'));
        });
    });
});
EN

回答 3

Stack Overflow用户

发布于 2018-04-19 21:48:48

如果您有访问权限(对不起,我不知道这是如何设置的),您可以使用JDBC或ODBC。您可以在Java中使用开源节点工具包(通过Node.js),也可以使用jt400 - jt400包,该包将一些jt400 java库包装到节点绑定中。

代码语言:javascript
复制
const jt400 = require('node-jt400');
const { connect, pool, Connection, TransactionFun, BaseConnection } = jt400;
const jt400config = {
  host: 'POWER7',
  user: username,
  password: password,
  "translate binary": "true" // might be important for you...
};
const pool2 = await connect(jt400config);
const query = (pool,query) => new Promise((res, rej) => {
  pool
    .query(query)
    .then((results) => res(results))
    .catch((err) => rej(err));
});
let queryResults = await query(pool2,`
  SELECT * FROM (
    SELECT 
      asdf,
      asdf2,
      CONCAT(CONCAT(asdf3,asdf4),asdf5) AS asdf6
    FROM ${library}.${table}
  ) as A 
  WHERE asdf6= '${myAsfd6}'
`);
票数 2
EN

Stack Overflow用户

发布于 2018-04-17 03:44:44

Aaron Bartell (谁是node.js / IBM组合的v专家)的这篇文章有帮助吗?

https://www.mcpressonline.com/analytics-cognitive/db2/techtip-node-js-on-linux-with-jdbc-connection-to-db2-for-i

他给出了几个选择,尽管没有一个只是提供一个免费的替代司机。他为他的jdbc选项提供了一个工作示例。

票数 0
EN

Stack Overflow用户

发布于 2020-06-20 12:17:17

ibm_db包在幕后使用Db2连接驱动程序。当连接到IBM时,您已经发现,Db2连接需要许可证。

从节点连接时,建议使用node-odbcIBM i Access ODBC driver,而不要使用ibm_db。这不需要许可证,可以跨Windows、Linux和IBM in PASE运行。我们在这个包的基础上构建了对LoopBackSequelize的支持。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49857493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档