Oracle发布官方版Node.JS数据库驱动

jopen 9年前

近日Oracle发布了官方版的Node.JS数据库驱动 node-oracledb,其他主流SQL数据库的Node.JS驱动: MySQL数据库Node.JS驱动:node-mysql; 微软SQL Server数据库Node.JS驱动官方版: node-sqlserver;  从关注人数可以看出Node社区对大型收费关系型(SQL)数据库的热情并不高。

1.关于node-oracledb


为高性能Node.js应用程序设计的Oracle数据库驱动。

node-oracledb0.2支持Oracle基本和先进的功能,包括:

  •   SQL和PL/ SQL执行
  •   使用JavaScript对象或数组绑定
  •   将查询结果以JavaScript对象或数组返回
  •   JavaScript和Oracle之间的数据类型转换
  •   事务管理
  •   连接池
  •   Statement缓存
  •   客户端结果缓存
  •   端到端跟踪
  •   高可用性功能
          快速应用通知(FAN)
          负载均衡(RLB)
          透明的应用程序故障切换(TAF)

node-oracledb0.2是一个预览版。我们正在积极努力增加包括Windows平台的支持,LOB支持,批量抓取/大型结果集查询,流和DRCP支持。

示例:在node-oracledb中执行简单的SELECT,注
带有很重的Java风格

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);        });    });


在Oracle的HR schema(示例数据库),输出为:


[ [ 180, 'Construction' ] ]


这里有更详细的示例代码


2. 安装


只能通过GitHub安装. 基本的步骤如下:

  •   安装Oracle客户端库,或者安装一个本地的免费数据库版本,如Oracel XE
  •   将代码从此仓库Clone到本地
  •   运行npm install

查看详细的安装文档


3 node-oracle


注* 三年前有人为node.js社区发布了“山寨”版的oracle数据库驱动,github项目名node-oracle,在npm中使用了oracle这个模块名,现在Oracle官方版只能在后面多加个db了,下面为node-oracle的示例代码:

var oracle = require('oracle');    var connectData = {      hostname: "localhost",      port: 1521,      database: "xe", // System ID (SID)      user: "oracle",      password: "oracle"  }    oracle.connect(connectData, function(err, connection) {    if (err) { console.log("Error connecting to db:", err); return; }      connection.execute("SELECT systimestamp FROM dual", [], function(err, results) {        if (err) { console.log("Error executing query:", err); return; }          console.log(results);        connection.close(); // call only when query is finished executing    });  });
来自:http://ourjs.com/detail/54cdb567232227083e000020