nodejs连接oracle比较复杂,需要配置各种环境,踩了无数个坑,总结一下经验

笔者的系统为win10 64位,所需的的包为oracledb,笔者的版本号为V2.3

配置环境

配置oci.dll

首先去oracle官网下载instantclient,笔者下的是12.2版本
下载后安装,并检查下windows的环境变量,在下面的系统变量中,需要OCI_INC_DIR,OCI_LIB_DIR,OCI_VERSION,以及path中的文件夹路径

首先配置OCI_INC_DIR,OCI_LIB_DIR,OCI_VERSION,以笔者的路径为例
OCI_INC_DIR,OCI_LIB_DIR,OCI_VERSION

然后配置path中的文件夹路径,以笔者的路径为例
path

下载visual studio 2015

并不知道这一步有什么用,但官方说明是使用的vc2015,所以我就下载了visual studio 2015。读者可自行测试不下载直接安装,若不通过,再下载即可。

使用代理

因为GFW,导致github并不完整,所以如果在安装oracledb包,有报错信息NJS-054或者404错误,则应该是被墙。具体原理此处不做介绍,请各位访客自行解决GFW的问题

安装oracledb

npm i oracledb

连接oracle

一个简单的demo代码:

const oracledb = require('oracledb');

oracledb.getConnection(
        {
        user: "",  //用户名
        password: "",  //密码
        connectString: "",  //数据库地址
        privilege: oracledb.SYSDBA,  //登陆角色,此处为SYSDBA
        },
        function (err, connection){
            if (err) {
                console.error(err.message);
                return;
            };
        connection.execute(
            this.query_statement,
            [],  // bind value for :id
            function (err, result) {
                if (err) {
                    console.error(err.message);
                    doRelease(connection);
                    return;
                };
            //打印表头
            console.log(result.metaData);
            //打印表中数据
            console.log(result.rows);
            doRelease(connection);
        });
    });
function doRelease(connection) {
  connection.close(
    function(err) {
      if (err)
        console.error(err.message);
    });
}
因为查询是异步操作,所以如果要对数据进行操作,则需要以同步的方式或者回调来进行。同步方式参考我的另一篇文章:JavaScript异步编程与解决方案

参考资料

NodeJs连接Oracle数据库
nodejs 使用官方oracledb库连接数据库 教程
oracledb的API

Last modification:October 28, 2019
If you think my article is useful to you, please feel free to appreciate