背景
node.js操作mysql数据库相当容易,但是操作oracledb就有些复杂,需要依赖oracle客户端,本文记录在CentOS7操作系统下使用node.js操作oracle数据库的过程。
资源下载
1、node.js解压包:node-v10.15.1-linux-x64.tar.xz
http://nodejs.cn/download/(中文版没有Linux64的包)
https://nodejs.org/en/download/(英文版有Linux64位的包)
2、oracle11客户端:instantclient-basic-linux.x64-11.2.0.4.0.zip
https://download.csdn.net/download/yang_xu_1987/9984899
3、开发工具sdk:instantclient-sdk-linux.x64-11.2.0.4.0.zip
https://download.csdn.net/download/yang_xu_1987/9984984
oracle官网下载地址:https://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
有个弊端就是需要进行帐号注册,而且页面反应极其慢。
node.js安装
1、上传node-v10.15.1-linux-x64.tar.xz到opt目录。
2、解压:tar -xvf node-v10.15.1-linux-x64.tar.xz
3、重命名:mv node-v10.15.1-linux-x64 nodejs
上传oracle的客户端和开发工具
1、本地解压instantclient-basic-linux.x64-11.2.0.4.0.zip和instantclient-sdk-linux.x64-11.2.0.4.0.zip后,得到一个instantclient_11_2的文件夹,其目录结构为:
2、将instantclient_11_2目录上传到Linux系统的/opt/目录下。
配置环境变量
1、编辑/etc/profile文件,添加如下系统变量:
export NODE_PATH=/opt/nodejsexport PATH=$NODE_PATH/bin:$PATH
export LD_LIBRARY_PATH=/opt/instantclient_11_2
export OCI_LIB_DIR=/opt/instantclient_11_2
export OCI_INC_DIR=/opt/instantclient_11_2/sdk/include
2、source /etc/profile使配置生效。
3、查看node的版本node -v
安装oracledb模块
npm install oracledb --save
编写oracle连接代码
1、mkdir nodetest
2、touch oracledb.js
3、vi oracledb.js添加如下内容:
```var oracledb = require('oracledb'); var config = { user:'dd', //用户名 password:'ddd', //密码 //IP:数据库IP地址,PORT:数据库端口,SCHEMA:数据库名称 connectString : "IP:1521/orcl" };
oracledb.getConnection(
config,
function(err, connection)
{
if (err) {
console.error(err.message);
return;
}
//查询某表十条数据测试,注意替换你的表名
connection.execute("SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM mytable) A WHERE ROWNUM <= 10 ) WHERE RN >= 0",
function(err, result)
{
if (err) {
console.error(err.message);
doRelease(connection);
return;
}
//打印返回的表结构
console.log(result.metaData);
//打印返回的行数据
console.log(result.rows);
});
});
function doRelease(connection)
{
connection.close(
function(err) {
if (err) {
console.error(err.message);
}
});
}
(上述代码粘贴来源:https://www.cnblogs.com/rysinal/p/7779055.html)
4、执行代码node oracledb.js
5、测试结果
由于没有可用的oracle数据库连接,该脚本运行报连接超时错误: