簡體   English   中英

帶有 db2/AS400 的 Node.js

[英]Node.js with db2/AS400

我們有一個使用 ibm_db 連接到 DB2/AS400 的 Node.js 項目。

問題是它返回以下錯誤:

[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' }

是否有另一種方法可以從不需要許可證的節點、js 連接到 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。 您可以使用帶有 Java 的開源 jt400 工具包(通過 Node.js),或者您可以使用 node-jt400 包,它將一些jt400 java 庫包裝到節點綁定中。

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

這篇來自 Aaron Bartell(他是 node.js / IBM i 組合的專家)的文章有幫助嗎?

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

他提供了幾個選項,但沒有一個簡單地提供一個替代的、免費的驅動程序。 他為他的 jdbc 選項提供了一個工作示例。

ibm_db 包在幕后使用 Db2 Connect 驅動程序。 連接到 IBM i 時,Db2 Connect 需要您找到的許可證。

建議使用node-odbcIBM i Access ODBC 驅動程序,而不是使用 ibm_db,從節點連接。 這不需要許可證,並且在 PASE 中跨 Windows、Linux 和 IBM i 工作。 我們已經在這個包的基礎上構建了我們的LoopBackSequelize支持。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM