在nodejs中,使用node-oracle连接oracle

来源:互联网 发布:4g网络摄像头哪家好 编辑:程序博客网 时间:2024/05/29 10:07

nodejs连接oracle并不是那么容易,我使用的是node-oracle,安装还算顺利。

这个项目的地址是

https://github.com/joeferner/node-oracle

有兴趣的同学可以去看英文的安装步骤,在这个我结合自己的经验,给大家一点建议

下载oracle instant client

这个可以去oracle的官方网站上下载,地址随版本更新,经常变化,这儿就不贴地址了。我用的64位的centos,当然下载linux-64位版本了。
再提几点值得注意的地方,11.X和12.X版本都是合适的,建议用12.X版本,本人测试通过。而且现在有几个项目在用,稳定性还可以,经得起实践考验。需要下载的文件有两个,一个叫basic,一个叫sdk,两个都需要下载,下载之后,解压到同一个文件夹,我的解压地址是
/data/app/instantclient_12_1

instantclient_12_1是解压之后,自动生成的。

配置环境变量

然后该配置环境变量了,修改/etc/profile文件,在末尾追加内容

export OCI_HOME=/data/app/instantclient_12_1export OCI_LIB_DIR=$OCI_HOMEexport OCI_INCLUDE_DIR=$OCI_HOME/sdk/includeexport OCI_VERSION=12 # Optional. Default is 11.export NLS_LANG=AMERICAN_AMERICA.UTF8

注意OCI_VERSION,我下载的大版本是12,所以就填了12.

然后使环境变量生效

source /etc/profile

创建软链接

创建.so文件的软链接

cd $OCI_LIB_DIRln -s libclntsh.so.12.1 libclntsh.soln -s libocci.so.12.1 libocci.so

安装libaio

执行

sudo yum install libaio

确保libaio模块成功安装

Add the shared object files to the ld cache

直接贴了英文,因为我觉得这样最容易理解。依次执行下面两个语句

echo '/data/app/instantclient_12_1/' | sudo tee -a /etc/ld.so.conf.d/oracle_instant_client.confsudo ldconfig

安装模块

终于到这一步了,安装模块

npm install --save oracle

这一步可能耗时比较久一点。


简单的使用示例

链接数据库

var oracle = require('oracle');var config = {hostname: "192.168.11.118",port: 1521,database:"***",user: "***",password: "***"};oracle.connect(config, function(err, conn) {<span style="white-space:pre"></span>if(err)        {        <span style="white-space:pre"></span>console.log(err);        }        else {        <span style="white-space:pre"></span>console.log("connect to oracle success!");        }});

输出如下

connect to oracle success!

执行sql语句

var sql = "select * from admini";conn.execute(sql, [], function(err, data){<span style="white-space:pre"></span>console.log(err);<span style="white-space:pre"></span>console.log(data);});

返回

undefined[ { ID: '21debebc3650469f97a6844289fb5937',<span style="white-space:pre"></span>NAME: 'admin',<span style="white-space:pre"></span>PASSWORD: '123456',<span style="white-space:pre"></span>TYPE: 0,<span style="white-space:pre"></span>VERSION: 0 } ]

一些更高级的功能,请读者参考node-oracle模块的说明文档。



1 0
原创粉丝点击