Nodejs 使用Oracle数据库

驱动

https://github.com/oracle/node-oracledb
把代码clone到本地

ubuntu下编译

下载:Instant Client

http://www.oracle.com/technetwork/database/features/instant-client/index-100365.html

下载:

  • oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
  • oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
  • oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm

运行命令:

转换格式
sudo alien -k oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
sudo alien -k oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
sudo alien -k oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm
安装
sudo dpkg -i oracle-instantclient12.1-basic_12.1.0.2.0-1_amd64.deb
sudo dpkg -i oracle-instantclient12.1-devel_12.1.0.2.0-1_amd64.deb
sudo dpkg -i oracle-instantclient12.1-sqlplus_12.1.0.2.0-1_amd64.deb
设置环境变量
sudo gedit /etc/profile
export ORACLE_HOME=/usr/lib/oracle/11.2/client
export ORACLE_BASE=/usr/lib/oracle/11.2
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
生效
source /etc/profile
sudo reboot
其它依赖的包
apt-get install libaio-dev    #centos使用 yum install libaio
运行sqlplus
/usr/lib/oracle/12.1/client64/bin/sqlplus
环境变量
vim /root/.bash_profile
最后加入:
LD_LIBRARY_PATH=/usr/lib/oracle/11.1/client64
运行命令:
sudo -s
source /root/.bash_profile

把 /opt/oracle/instantclient_12_1 设置进环境变量:LD_LIBRARY_PATH 。

export LD_LIBRARY_PATH=”/opt/oracle/instantclient_12_1”

npm install

或者直接运行:

npm install oracledb

win7下编译

下载Oracle 11g Express

这是Oracle Express免费版本。也许不装它,使用instantclient也可以,我没有尝试。

安装vs2012 Express

安装Nodejs

安装InstantClient

下载

instantclient-basic-windows.x64-12.1.0.2.0.zip
instantclient-sdk-windows.x64-12.1.0.2.0.zip

解压后放到:

C:\instantclient_12_1
现在它显示是这样的:
Nodejs 使用Oracle数据库_第1张图片

设置环境变量

OCI_INCLUDE_DIR=C:\instantclient_12_1\sdk\include
OCI_LIB_DIR=C:\instantclient_12_1\sdk\lib\msvc\vc11
OCI_VERSION=12 
Path=...;c:\instantclient_12_1\vc11;c:\instantclient_12_1

这里有个编译好的项目:
https://github.com/bmulcahy/node-oracledb_selfcontained

示例代码

var oracledb = require('oracledb');

oracledb.getConnection(
  {
    user          : "hr",
    password      : "welcome",
    connectString : "localhost/XE"
  },
  function(err, connection)
  {
    if (err) {
      console.error(err.message);
      return;
    }
    connection.execute(
      "SELECT department_id, department_name "
    + "FROM departments "
    + "WHERE department_id = :did",
      [180],
      function(err, result)
      {
        if (err) {
          console.error(err.message);
          return;
        }
        console.log(result.rows);
      });
  });

参考:
http://blog.gaoqixhb.com/p/53d98e7f3cff58870566e9b4
http://my.oschina.net/zenglingfan/blog/164390

你可能感兴趣的:(Nodejs 使用Oracle数据库)