javascript - 带有 db2/AS400 的 Node.js

标签 javascript node.js ibm-midrange db2-400

我们有一个 Node.js 项目,它使用 ibm_db 连接到 DB2/AS400。

问题是它返回以下错误:

[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 连接到 AS400?

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

"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'));
        });
    });
});

最佳答案

如果您有权访问(抱歉,我不知道这是如何设置的),您可以使用 JDBC 或 ODBC。您可以将开源 jt400 工具包与 Java(通过 Node.js)结合使用,也可以使用将 jt400 java 库部分包装到 Node 绑定(bind)中的 node-jt400 包。

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}'
`);

关于javascript - 带有 db2/AS400 的 Node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49857493/

相关文章:

javascript - 如何在 ul 元素上触发 focusout 事件?

javascript - localStorage访问是一个繁重的操作吗

php - 插入或删除时,与 PDO 的 DB2 连接抛出一般错误 -7008

ibm-midrange - CPYTOIMPF 到 qtemp 是否比到其他库更快?

javascript - 将 javascript 添加到 Rails 应用程序页面

javascript - 使用javascript从动态对象列表中获取值

javascript - 在 POST Express 中使用隐藏输入

node.js - 在 axios header 上设置默认 header 是否会反射(reflect)在其他模块中所有导入的 axios 实例中?

javascript - 如何使用 promise 和循环 mongoose 集合

ibm-midrange - AS400中显示新窗口时如何删除先前的窗口