NODE.JS DM数据库驱动简介及搭建

一、Node.js DM 数据库驱动版本介绍
分为新版本和老版本。其中老版本驱动包在达梦安装路径下的dmdbms\drivers\node.js文件夹中,包含以下三个版本:

那么如何选择合适的版本,可以在node.js交互式解释器中输入:
   >process.platform
   >process.arch
   >process.versions.modules
   依次得到操作系统平台、位数、node.js的ABI版本信息,根据以上信息得到对应版本的驱动。

达梦数据库安装包中没有提供新版本的驱动包,而是需要使用命令自动下载安装,本文后续会介绍安装方法。

目前老版本的驱动已经不进行运维。所以建议大家使用新版本驱动。新版本的驱动要求node语言版本要升级到至少v12

二、基础环境准备

1.安装python,本文以python2.7为例。

首先到对应官网上下载2.7的安装包,安装。建议路径为英文,不要包含中文字符。我本地是安装到了C盘,安装后如下图。

将安装路径配置到环境变量中,在PATH中添加:

C:\Python27\

C:\Python27\python.exe

2.安装node,本文以nodev12为例。

node官网下载安装包(32位或者64位),根据自己的环境下载不同类型的安装包。

默认安装即可,安装后如下图:

安装好后可以用node -v查看一下node版本,正常输出版本就是安装成功。

再查看下npm的版本,npm -v

将安装路径配置到环境变量中,在PATH中添加:

E:\node-v12.2.0-win-x64\

C:\Users\AppData\Roaming\npm

三、安装驱动

由于新老版本驱动的安装步骤以及所需要的环境有差距,所以分开介绍。

老版本驱动:

老版本主要用于nodev12以下的版本,所以需要将本地的node版本降下来,安装nodev10,并将环境变量里面的地址修改为v10的路径即可。

1.安装 oracledb 模块
npm i nstall oracledb@3.1.0

由于 DM 已实现符合 OCI 接口标准的 DCI ,故可以向开发人员提供向 Oracle 兼容的 Node.js 接口。所以需要先安装oracledb

2.在达梦安装路径下的dmdbms\drivers\node.js文件夹中,选择适合本地环境的版本,用该文件夹下的oracledb.node 动态链接库,覆盖 1 中安装的oracledb 模块 build/Release 下的 oracledb.node

3 .配置环境变量 (dmoci 动态链接库位置)
假设 DM 安装目录为 /home/dmdbms (Linux 平台 或 C: dmdbms (Windows 平台 。 Linux平台下需配置环境变量 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/dmdbms/bin 。
Windows 平台下需将配置环境变量 PATH=%PATH%;C: dmdbms bin

新版本驱动:

Node.js DM 数据库驱动为达梦公司根据达梦数据库的特点, 为node.js开发提供的一套 DM Node.js 数据库驱动接口。包名为dmdb

使用命令安装dmdb包,安装时会自动下载一些依赖包,例如iconvlite 、 snappy。但是我本地下载的时候发生了报错,原因是本地没有安装node-gyp。所以建议先安装node-gyp。

$ npm install -g node-gyp

参考资料:https://www.npmjs.com/package/node-gyp

安装node-gyp过程中本人走过的几个坑,列出来仅供参考。

  • python版本问题

由于我本地安装过python2.7和python3.8,node-gyp网站上介绍支持v2.7-v3.9,所以第一次安装时我没有指定版本v2.7,而是用的v3.8。导致安装node-gyp时,发生js编译报错。指定v2.7版本后,正常。

执行 npm config set python C:\Python27\    ,选择npm的python版本。       

  • 安装microsoft visual studio

node-gyp要求安装microsoft visual studio工具,我本地第一次安装microsoft visual studio版本为官网介绍的2017版。安装后发现,在后续安装dmdb驱动时发生报错:

在尝试了网上介绍的几种方法,重新安装npm,node-gyp,刷新等都不好用的情况下,考虑到我本地的node和python版本都比较低,是否有可能是版本的问题,所以我将microsoft visual studio版本降到了2015版。执行成功。

执行 npm config set msvs_version 2015,选择版本。

node-gyp搭建成功后,即可安装dmdb驱动。

npm install dmdb

安装成功后,可以正常进行测试。下面提供一个测试样例dmTest2.js:

//'use strict';
//const odbc = require('oracledb');
const db = require("dmdb");
let pool = null;


class dmTest {
    constructor() {
        this.pool = null;
        this.config = {
			connectString: "dm://user:password@127.0.0.1:5236?autoCommit=true",
			poolMax: 10,
            poolMin: 1
        }
    }

    async execute() {
        let conn = null;
        try {
            if (!this.pool) {
                this.pool = await db.createPool(this.config)
            }
            conn = await this.pool.getConnection();
			conn.execute(
			"select name, id from sysobjects where name = :na",{na:{val:'SYSDBA',dir:db.BIND_IN}},{resultSet: false},
				function(err, result) {
						console.log('result1', result);
				}
			)
			conn.execute(
			"insert into login_logs(id) values(:na)",{na:{val:'5135',dir:db.BIND_IN}},{resultSet: true},
				function(err, result) {
						console.log('result2', result);
				}
			)
        } catch (e) {
            console.log('execute', e);
            return 0;
        } finally {
            if (conn) {
                try {
                    conn.close(function (e) {console.log('excute conn close')});
                } catch (e) {
                    console.log('conn close err1', e);
                }
            }
        }

    }
    async closePool() {
        try {
				this.pool.close();
        } catch (e) {
            console.log('closePoll err3', e);
        }
    }
}
let test = async function(){
    let dt = new dmTest();
	let thisVal = await dt.execute();

}

test();

//保持进程运行,便于查看数据库会话状态
setInterval(function(){
    console.log('保持进程不退出');
},10000)

执行成功并输出

最后整理一下各路径和版本:
E:\node-v12.2.0-win-x64>cnpm -v
cnpm@6.1.1 (E:\node-v12.2.0-win-x64\node_modules\cnpm\lib\parse_argv.js)
npm@6.14.11 (E:\node-v12.2.0-win-x64\node_modules\cnpm\node_modules\npm\lib\npm.js)
node@12.2.0 (E:\node-v12.2.0-win-x64\node.exe)
npminstall@3.28.0 (E:\node-v12.2.0-win-x64\node_modules\cnpm\node_modules\npminstall\lib\index.js)
prefix=E:\node-v12.2.0-win-x64
win32 x64 10.0.19041
Visual Studio 15
registry=https://r.npm.taobao.org

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值