node.js查询oracle,nodejs操作oracle数据库示例

首先用SQLPLUS或其它工具在oracle数据库里创建表MY_USERS,用来此次测试:

CREATE TABLE MY_USERS( ID INTEGER, FIRSTNAME NVARCHAR2(20), LASTNAME NVARCHAR2(20) ) TABLESPACE  SYSTEM;

nodejs读写oracle的示例代码如下:

// 使用的oracle驱动:https://github.com/joeferner/node-oracle

var oracle = require('oracle');

// 需根据实际测试环境配置连接oracle数据库的参数

var oraConfig = {

hostname: "192.168.0.230",

port: 1521,

database: "orcl",    // oracle的SID

user: "system",    // 登录oracle的用户名

password: "password" // 请换为实际密码

}

或者:

var oraConnString = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.230)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)))";

var oraConfig = { "tns": oraConnString, "user": "system", "password": "wangkong" };

// 插入1条数据,并返回被插入记录的I某个字段

oracle.connect(oraConfig, function(err, connection) {

if (err) {

console.log("Fail to connect oracle:", err);

return;

}

connection.setAutoCommit(true);

connection.execute("INSERT INTO MY_USERS(ID,FIRSTNAME,LASTNAME) VALUES (:1, :2, :3) RETURNING FIRSTNAME INTO :4", [2, '陈', '二', new oracle.OutParam(oracle.OCCISTRING)], function(err, result) {

if (err) {

console.log(err);

return;

}

console.log(JSON.parse(result));

connection.close();

});

});

返回结果为:

{

"updateCount": 1,

"returnParam": "陈"

}

// 批量插入记录

oracle.connect(oraConfig, function(err, connection) {

if (err) {

console.log("Fail to connect oracle:", err);

return;

}

connection.setAutoCommit(true);

function doInsert(sqlCmdOfInsert, records, callback) {

if (records.length > 0) {

sqlCmdOfInsert.execute(records.shift(), function(err, result) {

if (err) {

return callback(err);

}

if (result.updateCount !== 1) {

return callback(new Error("bad updateCount: " + result.updateCount));

}

// recurse with remaining records

doInsert(sqlCmdOfInsert, records, callback);

});

} else {

// job is finished

return callback();

}

}

var users = [ [ 3, "张", "三" ], [ 4, "李", "四" ], [ 5, "王", "五" ], [ 6, "赵", "六" ] ];

var sqlCmdOfInsert = connection.prepare("INSERT INTO MY_USERS(ID, FIRSTNAME, LASTNAME) VALUES(:1, :2, :3)");

doInsert(sqlCmdOfInsert, users, function(err) {

if (err) {

console.log(err);

return;

}

console.log("Done!");

});

});

// 查询一条记录:

oracle.connect(oraConfig, function(err, connection) {

if (err) {

console.log("Fail to connect oracle:", err);

return;

}

connection.execute("SELECT * FROM MY_USERS WHERE ID=:1", [5], function(err, results) {

if (err) {

console.log("Fail to query table:", err);

return;

}

console.log(JSON.parse(result));

connection.close();

});

});

// 查询多条记录,每次读取处理1条记录

oracle.connect(oraConfig, function(err, connection) {

if (err) {

console.log("Fail to connect oracle:", err);

return;

}

connection.setPrefetchRowCount(200);

var reader = connection.reader("SELECT * FROM MY_USERS WHERE ID>:1", [2]);

function doRead(cb) {

reader.nextRow(function(err, row) {

if (err) {

return cb(err);

}

if (row) {

// do something with row

console.log(JSON.stringify(row, "", "\t"));

// recurse to read next record

return doRead(cb)

} else {

// we are done

return cb();

}

})

}

doRead(function(err) {

if (err) {

console.log(err);

return;

}

console.log("Done!");

});

});

参考网址:

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

https://www.npmjs.org/package/oracle

http://my.oschina.net/zenglingfan/blog/164390

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值