一、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

NODE.JS DM数据库驱动简介及搭建相关推荐

  1. Node.js SQL数据库操作 (上)(操作MySQL数据库及 数据库连接池)

    文章目录 Node.js MySQL驱动 操作 MySQL 数据库 连接 MySQL 数据库 增删改查操作 防止 SQL 注入攻击 数据库连接池操作 Node.js MySQL驱动 Node.js的原 ...

  2. node.js安装express(零起点搭建本地测试服务器)- 教程篇

    (含图文教程.代码对比,等)node.js安装express(零起点搭建本地测试服务器)- 教程篇 原教程 · 参考地址 执行step3之后,结果截图 · 如下图2 : 之后,执行step4,截图如下 ...

  3. node.js 链接 数据库

    node.js 链接 数据库 1.前提 电脑已安装node,可以通过win+R 键,输入cmd,然后输入,node -v,检查版本: . 再输入npm -V,检查npm的安装版本 以上都有之后,建立一 ...

  4. node.js+MySql数据库+HTML实现内部查重系统

    node.js+MySql数据库+HTML实现内部查重系统 实现目标: 1.将每个人的项目登记,存入MySql数据库 2.在填写时进行实时正则判断,判断每项输入格式是否正确,方便之后进行查重对比 3. ...

  5. Node.js系列-----数据库MySQL

    一.数据库MySQL 1.1. 为什么要使用数据库 任何的软件系统都需要存放大量的数据,这些数据通常是非常复杂和庞大的: 比如用户信息包括姓名.年龄.性别.地址.身份证号.出生日期等等: 比如商品信息 ...

  6. 基于 Node.js 爬虫的数据 API,搭建一套属于自己的 API 数据

    SpliderApi https://github.com/ecitlm/Spl... 基于nodejs 的爬虫 API接口项目,包括前端开发日报.知乎日报.前端top框架排行.妹纸福利.搞笑视频/ ...

  7. [网站]node.js如何在云服务器上搭建

    //下载node.js v14.5.0的压缩包wget https://nodejs.org/dist/v14.5.0/node-v14.5.0-linux-x64.tar.xz//解压tar xvf ...

  8. [Node.js] 2、利用node-git-server快速搭建git服务器

    本文用到了node-git-server 1.检测本地git版本 该包的使用需要机器上本来就安装git,且git的版本大于等于2.7: 1 ╭─root@lt /home/workspace 2 ╰─ ...

  9. node.js——阿里企业级服务框架Egg搭建

    egg是阿里开源的企业级框架,主要设计理念为平衡团队之间的技术差异,专注于提供 Web 开发的核心功能和一套灵活可扩展的插件机制.通过 Egg,团队的架构师和技术负责人可以非常容易地基于自身的技术架构 ...

最新文章

  1. 开放重定向(Open Redirection)
  2. leetcode1 两数之和
  3. 情人节找个程序员当男朋友,一般都不会太差
  4. C#中不同窗口之间传递值的两种方法
  5. QQ for Linux 复活,微信 for Linux 还远吗?
  6. Java设计模式陈列
  7. 中外合作有开计算机课吗,探究中外合作办学计算机应用课程建设.doc
  8. x86/x64编程基础
  9. RabbitMQ~一些术语和最消息的生产
  10. Linux检测内存泄露的脚本
  11. php连接sql server
  12. CentOS 官网下载 iso 镜像
  13. kws 命令词唤醒介绍
  14. 重心法选址 matlab程序,Excel重心法选址计算题的详细步骤
  15. 磨金石教育摄影技能干货分享|世界顶级的手机摄影作品欣赏
  16. ElasticSearch 参数调优
  17. 让div中的p标签文字垂直居中的方法
  18. ubuntu etc 设置权限777带来的问题
  19. SCORM课程对接线上课程学习平台
  20. html 全景图three,室内房间全景图(基于three.js)

热门文章

  1. RSD处理高分5号高光谱(GF5 AHSI)数据(四)——从地物光谱搜索高光谱数据集
  2. HTML+CSS仿写京东页面附代码(web前端大作业)
  3. bootstrap 表头组合
  4. C语言编程>第十六周 ② 函数fun的功能是:统计长整数test的各位上出现数字5、6、7的次数,并通过外部(全局)变量sum5、sum6、sum7返回主函数。
  5. 在MacBook Pro上装Mac和Linux双系统
  6. html用if函数,if函数怎么用的实例
  7. 谷歌浏览器提示您的连接不是私密连接怎么办
  8. 大神李沐被曝离职!投身大模型创业,GitHub项目已开
  9. 光纤滑环的功能和作用
  10. 设置了相对定位relative之后,改变top值,如何去掉多余空白?