node.js - 如何使用带有 ODBC 连接的 Node js 连接 Informix 服务器?

标签 node.js windows odbc informix

  1. 我有 Linux Enterprise Server 10 SP2(x86_64) - 内核 2.6.16.60-0.21-smp。
  2. 我在上面的 linux 服务器上安装了 IBM Informix Dynamic Server Version 11.10.FC1。
  3. 我有带有 odbc 的 Windows 2008 服务器(例如 eadmin 的 dns 名称)(IBM INFORMIX 3.80 32 位),用于安装 informix 驱动程序和 XAMPP v3.2.2
  4. 我的开发 PC 是 Windows 7,安装了 odbc(例如 eadmin 的 dns 名称)(IBM INFORMIX 3.80 32 位),安装了用于安装 informix 驱动程序的 wamp 2.4 作为开发服务器。

我的网站在服务器和我的开发电脑 (Windows 7) 中都运行良好。

现在我要迁移到Node Js,我要

  1. 在我的开发机器中要遵循哪些步骤?

  2. 我试过了 npm 安装 odbc, npm 安装 ibm_db, npm 安装 win32ole 等

  3. 全部出错。 (或者不知道怎么安装,需要python报错什么的)

  4. 我想使用 ODBC dns 连接 Informix 服务器,因为我在 PHP 中无缝连接。

  5. 简单的 mongoDB、mysql 等连接工作正常但 informix 不工作。

最佳答案

首先,您应该升级您的 Informix 产品。 IDS 11.10 太旧了。 ODBC 3.80 甚至更早(3.80 包含在 2002 年发布的 CSDK 2.70 中)。

新的 Informix 服务器(例如 12.10.xC11)提供了使用 MongoDB 驱动程序直接连接的选项。 看看:

https://www.ibm.com/developerworks/community/blogs/da95bfce-e0cf-4056-8bc3-2deea450e378/entry/Informix_and_NoSQL_JSON_Wire_Listener_Setup_and_Mongo_Shell?lang=en

使用 JSON 监听器,无需通过 ODBC 驱动程序即可连接到 IDS 服务器。您可以使用连接到 MongoDB 的相同 NodeJS 模块。

不过,如果您不能升级引擎,有几个 Informix NodeJS 开源驱动程序,但它们都需要更新版本的 Informix ODBC 驱动程序和 ESQL/C 库。

https://github.com/OpenInformix/IfxNode/blob/master/LocalBuildWindows.md https://www.npmjs.com/package/informix

最新的 ODBC 驱动程序是 4.10.xC11。

Wankdander 的“node-odbc”模块在 Windows 上运行:

https://github.com/wankdanker/node-odbc

我使用 CSDK 4.10.FC8 中的 Informix ODBC 驱动程序对其进行了测试,因为它使用 ODBC 标准调用,它甚至可以与 3.80 一样旧的东西一起工作。

-------- 编辑 --------

刚刚从头开始测试。 您将需要:

  1. NodeJS(我用的是最新稳定版8.11.3)
  2. C 编译器(我使用的是 Visual Studio 2015,我想“免费”Express 版本就足够了)
  3. python

步骤是:

开始 session 并设置编译器环境:

C:\Program Files (x86)\Microsoft Visual Studio 14.0>d:

D:\Infx>cd infx\nodejs811

D:\Infx\nodejs811>dir
 Volume in drive D is Data750
 Volume Serial Number is F0B7-2E44

 Directory of D:\Infx\nodejs811

21/06/2018  12:26    <DIR>          .
21/06/2018  12:26    <DIR>          ..
12/06/2018  22:43        22,778,520 node.exe
11/02/2018  01:08               702 nodevars.bat
11/02/2018  01:08             8,985 node_etw_provider.man
21/06/2018  12:26    <DIR>          node_modules
11/02/2018  00:08             4,974 node_perfctr_provider.man
11/02/2018  01:08               867 npm
11/02/2018  00:08               483 npm.cmd
12/06/2018  01:50               867 npx
12/06/2018  01:50               483 npx.cmd
               8 File(s)     22,795,881 bytes
               3 Dir(s)  201,607,630,848 bytes free
D:\Infx\nodejs811>

设置nodeJS环境:

D:\Infx\nodejs811>nodevars.bat
Your environment has been set up for using Node.js 8.11.3 (x64) and npm.
C:\Users\Administrator> 

安装 node-gyp(构建 odbc 模块需要)

C:\Users\Administrator>npm install node-gyp
npm WARN Administrator No description
npm WARN Administrator No repository field.
npm WARN Administrator No README data
npm WARN Administrator No license field.

+ node-gyp@3.7.0
added 1 package in 1.821s

C:\Users\Administrator>

安装odbc模块:

C:\Users\Administrator>npm install odbc

> odbc@1.4.1 install C:\Users\Administrator\node_modules\odbc
> node-gyp configure build


C:\Users\Administrator\node_modules\odbc>if not defined npm_config_node_gyp (node "D:\Infx\nodejs811\node_modules\npm\no
de_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" configure build )  else (node "D:\In
fx\nodejs811\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" configure build )
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
  odbc.cpp
  odbc_connection.cpp
  odbc_statement.cpp
  odbc_result.cpp
    ....
    ....
  dynodbc.cpp
  win_delay_load_hook.cc
  strptime.c
     Creating library C:\Users\Administrator\node_modules\odbc\build\Release\odbc_bindings.lib and object C:\Users\Admi
  nistrator\node_modules\odbc\build\Release\odbc_bindings.exp
  Generating code
  Finished generating code
  odbc_bindings.vcxproj -> C:\Users\Administrator\node_modules\odbc\build\Release\\odbc_bindings.node
  odbc_bindings.vcxproj -> C:\Users\Administrator\node_modules\odbc\build\Release\odbc_bindings.pdb (Full PDB)
npm WARN Administrator No description
npm WARN Administrator No repository field.
npm WARN Administrator No README data
npm WARN Administrator No license field.

+ odbc@1.4.1
added 3 packages in 31.827s

C:\Users\Administrator> 

检查它是否与连接到 Informix ODBC DSN 的简单 js 脚本一起工作:

C:\Users\Administrator>type test.js
var db = require('odbc')()
  , cn = "DSN=ids1210;UID=informix;PWD=dummypwd;";

db.open(cn, function (err) {
  if (err) return console.log(err);

  db.query('select * from systables where tabid = 1', [42], function (err, data) {
    if (err) console.log(err);

    console.log(data);

    db.close(function () {
      console.log('done');
    });
  });
});

C:\Users\Administrator>node test.js
[ { tabname: 'systables',
    owner: 'informix                        ',
    partnum: 1049238,
    tabid: 1,
    rowsize: 500,
    ncols: 26,
    nindexes: 2,
    nrows: 177,
    created: '2017-10-18',
    version: 65831,
    tabtype: 'T',
    locklevel: 'R',
    npused: 7,
    fextsize: 32,
    nextsize: 32,
    flags: 0,
    site: null,
    dbname: null,
    type_xid: 0,
    am_id: 0,
    pagesize: 4096,
    ustlowts: 2018-06-17T00:11:37.000Z,
    secpolicyid: 0,
    protgranularity: ' ',
    statchange: null,
    statlevel: ' ' } ]
done

C:\Users\Administrator>

我没有 ODBC 3.80,我用 4.10 测试它,但理论上它应该可以工作,无论驱动程序的版本如何。 ODBC 3.8 没有 64 位版本,因此您需要使用 32 位版本的 NodeJS 并在 32 位模式下编译。

关于node.js - 如何使用带有 ODBC 连接的 Node js 连接 Informix 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50946845/

相关文章:

node.js - 仅在 Docker 中构建时不支持的引擎 Node/NPM

odbc - Hive ODBC 驱动程序 DSN 设置问题

mysql - Vb.Net/MySql 查询失败 - 未产生预期结果

asp.net - C# - 一次向 AS400 插入多条记录

javascript - 使用 axios.get 时套接字挂起,但使用 https.get 时不会

node.js - Socket.io 仅向房间中的部分用户发送消息

windows - 如何创建一个.bat文件,允许我输入输入(或者更好的是,从剪贴板获取输入)?

c# - 在c#中获取进程的打开线程数

windows - 可移植的可执行结构解释

javascript - Discord.js 如何切片链接