JavaScript中连接操作Oracle数据库实例

连接操作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数据库实例需要以下步骤:

  1. 首先,使用require()函数将oracledb库引入到JavaScript文件中。代码示例:
    const oracledb = require('oracledb');
  2. 接着,使用oracledb.getConnection()方法创建数据库连接。代码示例:
    const connection = await oracledb.getConnection({
    user: "username",
    password: "password",
    connectString: "host:port/sid"
    });

    在这个示例中,connectString是Oracle数据库实例的连接字符串,包括主机名host、端口号port、SID(System Identifier)sid。
  3. 成功连接到数据库实例后,就可以开始执行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技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • SQL 计算两个日期之间的工作日天数

    计算两个日期之间的工作日天数是一种常见的应用场景,可以通过SQL语句来实现。下面是SQL计算两个日期之间的工作日天数的完整攻略。 思路分析 计算两个日期之间的工作日天数,需要完成以下三个步骤: 计算两个日期之间一共有多少天。 排除掉日期之间的周末。 排除掉日期之间的节假日。 步骤说明 步骤1:计算两个日期之间一共有多少天 使用DATEDIFF函数可以计算两个…

    database 2023年3月27日
    00
  • java 执行redis的部分方法

    @Autowired private RedisTemplate<String, Object> redisTemplate; public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) { this.redisTemplate = redisTe…

    Redis 2023年4月12日
    00
  • 深入了解SQL注入

    介绍SQL注入攻击,需要先理解什么是SQL语句和它的运行方式。 SQL语句 SQL是一种常用于操作关系型数据库的语言,它包含许多指令用于增删改查数据,常见的指令有: SELECT:查询数据 INSERT:插入数据 UPDATE:更新数据 DELETE:删除数据 SQL运行过程 当我们在应用程序中使用SQL指令时,应用程序会将指令传递给数据库服务器,然后服务器…

    database 2023年5月22日
    00
  • sql分页查询几种写法

    SQL分页查询是指在查询结果中按照一定规则分页显示数据。在实际应用中,分页功能是十分常见的功能,MySQL和Oracle等主流数据库都提供了分页功能,下面我们来介绍SQL分页查询几种写法。 LIMIT分页查询 在MySQL数据库中,常用的分页手段是使用LIMIT语句。LIMIT语句可以用来控制从哪一行开始查询,查询的行数是多少。 SELECT * FROM …

    database 2023年5月21日
    00
  • wordpress 网站转移服务器操作的两种方法

    下面是详细的攻略过程,包含两条示例说明: 一、使用文件传输协议(FTP)转移 FTP是最常用的服务器之间文件传输的协议。如果您的服务器在互联网上开放FTP访问权限,可以使用FTP将您的WordPress网站从一个服务器转移到另一个服务器。 备份网站数据:在操作过程中可能会导致数据丢失或损坏,提前备份您的整个WordPress文件夹和数据库。 在新的服务器上安…

    database 2023年5月22日
    00
  • IntelliJ IDEA本地代码覆盖后恢复原来的代码图解

    下面我就来详细讲解“IntelliJ IDEA本地代码覆盖后恢复原来的代码”攻略,包含以下内容: 准备工作 操作步骤 示例说明 1. 准备工作 在进行本地代码覆盖后恢复原来的代码前,需要进行以下准备工作: 在 IntelliJ IDEA 中打开需要覆盖和恢复的项目。 在项目的 settings.gradle 中添加以下代码: groovy include ‘…

    database 2023年5月18日
    00
  • Docker安装部署Redis数据库的实现步骤

    下面我将详细讲解基于Docker安装部署Redis数据库的实现步骤。 1. 准备工作 在开始安装和部署Redis之前,我们需要先在电脑上安装好Docker和Docker-Compose,具体安装方法可以参考官方文档进行操作。 2. 使用Docker-Compose配置Redis部署环境 Docker-Compose是一种定义和运行多容器Docker应用程序的…

    database 2023年5月22日
    00
  • 分享15个Mysql索引失效的场景

    当进行MySQL查询时,优秀的索引设计可以提高查询性能,但如果失效了,索引将不再发挥任何作用,反而会导致性能下降甚至全表扫描。接下来,我们将介绍MySQL索引失效的15种场景以及如何解决它们。 1. 对索引列做函数操作 如果在查询条件中对索引列使用了函数操作,如下所示: SELECT * FROM user WHERE YEAR(created_at) = …

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部