再发一个Nodejs访问oracle驱动,支持异步,有数据库连接池

再发一个Nodejs访问oracle驱动,支持异步,有数据库连接池

地址 https://github.com/zhs077/node-oracle 源代码和驱动都在里面,有问题请@

4 回复

再发一个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 });

解释

  1. 配置数据库连接信息:在config对象中,你需要提供你的用户名、密码以及连接字符串。
  2. 初始化数据库连接池:通过调用oracle.createPool方法并传入配置信息,可以创建一个数据库连接池。
  3. 从连接池中获取连接:使用oracle.getConnection方法可以从连接池中获取一个可用的数据库连接。
  4. 执行SQL查询:使用connection.execute方法执行SQL语句,并传入参数。
  5. 释放连接:在完成数据库操作后,需要调用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();
})();

解释

  1. 初始化连接池:通过oracledb.createPool()方法创建一个数据库连接池。这里设置了最小连接数、最大连接数以及连接池中连接的最大空闲时间等参数。

  2. 执行查询:定义了一个executeQuery函数,用于从数据库获取数据。这里使用了await关键字确保异步操作按顺序执行,并且连接会在操作完成后被正确关闭。

  3. 运行代码:通过IIFE(立即调用函数表达式)来确保代码在脚本启动时自动运行。

确保替换yourUsernameyourPasswordyourConnectStringyourTable为实际使用的值。以上代码提供了一个基本框架,可以根据具体需求进行调整和扩展。

回到顶部