连接操作Oracle数据库实例可以使用Node.js的包管理器npm(Node Package Manager)中的oracledb库。oracledb是由Oracle Corporation提供的官方Node.js驱动程序,它支持连接Oracle Database 11.2、12.1、12.2、18c和19c。接下来我们将详细介绍如何使用oracledb在JavaScript中连接Oracle数据库实例。
步骤一:安装oracledb
在开始之前,我们需要先安装oracledb。可以使用以下命令在npm中安装oracledb:
npm install oracledb
但是,在安装之前,需要先确保本地操作系统具有以下要求:
- Oracle客户端库:oracledb需要Oracle客户端库才能连接到Oracle数据库。这可以是Oracle Instant Client或Oracle数据库安装的完整客户端。
- node.js:需要安装支持async/await的Node.js版本。
步骤二:连接Oracle数据库实例
连接到Oracle数据库实例需要以下步骤:
- 首先,使用require()函数将oracledb库引入到JavaScript文件中。代码示例:
const oracledb = require('oracledb');
- 接着,使用oracledb.getConnection()方法创建数据库连接。代码示例:
const connection = await oracledb.getConnection({
user: "username",
password: "password",
connectString: "host:port/sid"
});
在这个示例中,connectString是Oracle数据库实例的连接字符串,包括主机名host、端口号port、SID(System Identifier)sid。 - 成功连接到数据库实例后,就可以开始执行SQL查询或其他操作了。
以查询数据库中员工信息为例,以下是一个完整的示例代码:
const oracledb = require('oracledb');
const dbConfig = {
user: "hr",
password: "hr",
connectString: "localhost/XE"
};
async function run() {
let connection;
try {
// 创建数据库连接
connection = await oracledb.getConnection(dbConfig);
// 执行SQL查询语句
const result = await connection.execute(
`SELECT first_name, last_name
FROM employees
WHERE department_id = :did`,
[50] // 绑定查询条件参数
);
console.log(result.rows);
} catch (err) {
console.error(err);
} finally {
// 关闭数据库连接
if (connection) {
try {
await connection.close();
} catch (err) {
console.error(err);
}
}
}
}
run();
在这个示例中,连接Oracle数据库实例的连接字符串为"localhost/XE",用户名和密码为"hr"和"hr"。执行的SQL查询语句是查询department_id为50的员工的first_name和last_name。
步骤三:使用Promise封装
可以使用Promise封装上述代码,使其更加易读和易于维护。下面是相应的代码示例:
const oracledb = require('oracledb');
const dbConfig = {
user: "hr",
password: "hr",
connectString: "localhost/XE"
};
function run(sql, params) {
return new Promise(async (resolve, reject) => {
let connection;
try {
// 创建数据库连接
connection = await oracledb.getConnection(dbConfig);
// 执行SQL查询语句
const result = await connection.execute(sql, params, {autoCommit: true});
resolve(result);
} catch (err) {
reject(err);
} finally {
// 关闭数据库连接
if (connection) {
try {
await connection.close();
} catch (err) {
reject(err);
}
}
}
});
}
// 使用封装后的函数运行查询
run(`SELECT first_name, last_name FROM employees WHERE department_id = :did`, [50])
.then(result => console.log(result.rows))
.catch(err => console.log(err));
这个示例中使用了Promise,这使得我们能够更好地处理异步操作的结果,并可根据需要进行进一步的处理或响应。另外,在使用Promise时,可以将autoCommit属性设置为true,以确保所有数据库更改都以提交的方式进行。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript中连接操作Oracle数据库实例 - Python技术站