Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用db2/AS400的Node.js_Javascript_Node.js_Ibm Midrange_Db2 400 - Fatal编程技术网

Javascript 使用db2/AS400的Node.js

Javascript 使用db2/AS400的Node.js,javascript,node.js,ibm-midrange,db2-400,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.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 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'));
        });
    });
});

Aaron Bartell(node.js/IBM i combo的v专家)的这篇文章有帮助吗

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

如果您有访问权限(抱歉,我不知道如何设置),您可以使用jdbc或ODBC。您可以将开源jt400工具包与Java结合使用(通过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}'
`);

ibm_db包在幕后使用Db2 Connect驱动程序。当连接到IBMi时,DB2Connect需要许可证,正如您所发现的那样


建议使用和从节点进行连接,而不是使用ibm_db。这不需要许可证,可以跨Windows、Linux和IBMi-in-PASE工作。我们在这个软件包的基础上构建了我们的和支持。

我们尝试使用ibm_db,但正如文章所说,需要许可证。由于AS400的版本太旧,因此无法使用web服务。现在让我们试试JDBC:)