注* 近日Oracle发布了官方版的Node.JS数据库驱动 node-oracledb,其他主流SQL数据库的Node.JS驱动: MySQL数据库Node.JS驱动:node-mysql; 微软SQL Server数据库Node.JS驱动官方版: node-sqlserver; 从关注人数可以看出Node社区对大型收费关系型(SQL)数据库的热情并不高。
为高性能Node.js应用程序设计的Oracle数据库驱动。
node-oracledb0.2支持Oracle基本和先进的功能,包括:
node-oracledb0.2是一个预览版。我们正在积极努力增加包括Windows平台的支持,LOB支持,批量抓取/大型结果集查询,流和DRCP支持。
示例:在node-oracledb中执行简单的SELECT,注*带有很重的Java风格
在Oracle的HR schema(示例数据库),输出为:
这里有更详细的示例代码
只能通过GitHub安装. 基本的步骤如下:
查看详细的安装文档
注* 三年前有人为node.js社区发布了“山寨”版的oracle数据库驱动,github项目名node-oracle,在npm中使用了oracle这个模块名,现在Oracle官方版只能在后面多加个db了,下面为node-oracle的示例代码:
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
});
});
==
##
Error: The specified procedure could not be found. \?\D:\oracle_test\node_modules\oracledb\build\Release\oracledb.node at Error (native) at Object.Module._extensions..node (module.js:597:18) at Module.load (module.js:487:32) at tryModuleLoad (module.js:446:12) at Function.Module._load (module.js:438:3) at Module.require (module.js:497:17) at require (internal/module.js:20:19) at Object. (D:\oracle_test\node_modules\oracledb\lib\oracledb.js:27:19) at Module._compile (module.js:570:32) at Object.Module._extensions..js (module.js:579:10)
这个怎么解决?