再发一个Nodejs访问oracle驱动,支持异步,有数据库连接池
再发一个Nodejs访问oracle驱动,支持异步,有数据库连接池
地址 https://github.com/zhs077/node-oracle 源代码和驱动都在里面,有问题请@
再发一个Nodejs访问oracle驱动,支持异步,有数据库连接池
地址:
https://github.com/zhs077/node-oracle
引言
本文介绍了一个Node.js模块,用于访问Oracle数据库。该模块不仅支持异步操作,还提供了数据库连接池功能,使得应用能够更高效地管理和重用数据库连接。
示例代码
首先,确保你已经安装了node-oracle
模块:
npm install node-oracle
接下来,我们可以创建一个简单的Node.js应用程序来演示如何使用这个模块进行数据库操作。
创建数据库连接池
const oracle = require('node-oracle');
// 配置数据库连接信息
const config = {
user: 'your_username',
password: 'your_password',
connectString: 'your_connect_string'
};
// 初始化数据库连接池
async function initPool() {
try {
await oracle.createPool(config, { max: 10, min: 2 });
console.log('数据库连接池初始化成功');
} catch (error) {
console.error('数据库连接池初始化失败:', error);
}
}
initPool();
使用数据库连接池执行查询
async function queryDatabase(sql, params) {
let connection;
try {
// 从连接池中获取连接
connection = await oracle.getConnection();
// 执行SQL查询
const result = await connection.execute(sql, params);
// 输出查询结果
console.log(result.rows);
} catch (error) {
console.error('查询数据库时发生错误:', error);
} finally {
// 释放连接
if (connection) {
await connection.close();
}
}
}
// 调用查询函数
queryDatabase('SELECT * FROM your_table WHERE id = :id', { id: 1 });
解释
- 配置数据库连接信息:在
config
对象中,你需要提供你的用户名、密码以及连接字符串。 - 初始化数据库连接池:通过调用
oracle.createPool
方法并传入配置信息,可以创建一个数据库连接池。 - 从连接池中获取连接:使用
oracle.getConnection
方法可以从连接池中获取一个可用的数据库连接。 - 执行SQL查询:使用
connection.execute
方法执行SQL语句,并传入参数。 - 释放连接:在完成数据库操作后,需要调用
connection.close()
方法将连接返回到连接池中。
通过这种方式,你可以有效地管理和重用数据库连接,提高应用的性能和稳定性。
结论
以上就是使用node-oracle
模块进行数据库操作的基本流程。希望这能帮助你在Node.js项目中更好地与Oracle数据库交互。如果遇到任何问题,请随时在GitHub上提交issue或直接联系作者。
作者自己写的?强大呀
恩,我就用过这个,比oracle那个编译安装起来要省心, 分享下我的安装过程 http://blog.gaoqixhb.com/p/53d98e7f3cff58870566e9b4
针对“再发一个Nodejs访问oracle驱动,支持异步,有数据库连接池”的需求,可以使用oracledb
库来实现。oracledb
提供了强大的功能,包括异步访问和数据库连接池支持。以下是一个简单的示例代码,展示了如何设置和使用数据库连接池。
示例代码
const oracledb = require('oracledb');
// 设置数据库连接池配置
async function initPool() {
await oracledb.createPool({
user: 'yourUsername',
password: 'yourPassword',
connectString: 'yourConnectString',
poolMin: 2, // 最小连接数
poolMax: 10, // 最大连接数
poolIncrement: 1, // 当没有空闲连接时,增加的连接数
poolTimeout: 60 // 空闲连接的超时时间(秒)
});
}
// 执行查询操作
async function executeQuery() {
let connection;
try {
connection = await oracledb.getConnection();
const result = await connection.execute(`SELECT * FROM yourTable`);
console.log(result.rows);
} catch (err) {
console.error(err);
} finally {
if (connection) {
try {
await connection.close(); // 关闭连接
} catch (err) {
console.error(err);
}
}
}
}
// 初始化并执行查询
(async () => {
await initPool();
await executeQuery();
})();
解释
-
初始化连接池:通过
oracledb.createPool()
方法创建一个数据库连接池。这里设置了最小连接数、最大连接数以及连接池中连接的最大空闲时间等参数。 -
执行查询:定义了一个
executeQuery
函数,用于从数据库获取数据。这里使用了await
关键字确保异步操作按顺序执行,并且连接会在操作完成后被正确关闭。 -
运行代码:通过IIFE(立即调用函数表达式)来确保代码在脚本启动时自动运行。
确保替换yourUsername
、yourPassword
、yourConnectString
和yourTable
为实际使用的值。以上代码提供了一个基本框架,可以根据具体需求进行调整和扩展。