通过Oracledb驱动程序连接到具有Nodejs的远程Oracle DB

Bro*_*nts 2 oracle tnsnames node.js oracledb

嘿,我真的想弄清楚如何连接到远程Oracle测试数据库,我没有Java经验.所以,如果我能得到你的帮助,我将永远感激不尽.

我有一个远程测试数据库,我正在尝试连接到,我有一个旧样式SID的jdbc连接.根据这个链接:https://github.com/oracle/node-oracledb/blob/master/doc/api.md#notjdbc,我应该创建一个tnsnames.ora文件来连接,就像这样:

tnsnames.ora中:

appDB =
 (DESCRIPTION =
   (ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))
   (CONNECT_DATA =
     (SID = ORCL)
   )
 )
Run Code Online (Sandbox Code Playgroud)

然后我应该在我的节点server.js文件中引用它,就像这样

server.js:

const oracledb = require('oracledb');
oracledb.getConnection(
  {
    user          : process.env.ORACLE_USER,
    password      : process.env.ORACLE_PASSWORD,
    connectString : "appDB"
  },
  function(err, connection)
  {
    if (err) {
      console.error(err.message);
      return;
    }
    connection.execute(
      "SELECT * " +
        "FROM BOS_course",
      function(err, result)
      {
        if (err) {
          console.error(err.message);
          doRelease(connection);
          return;
        }
        console.log(result.rows);
        doRelease(connection);
      });
  });

module.exports = {
    oracledb
};
Run Code Online (Sandbox Code Playgroud)

但是,我不知道我应该把tnsnames.ora文件放在哪里.我在网上找到了这个链接,$ORACLE_HOME/network/admin但我不知道它指的是什么.我只能访问数据库.请原谅我的Java无知.如何在我的节点应用程序中使用此连接,该应用程序完全独立于数据库?我的应用程序如何知道"appDB"是什么以及如何在tnsnames.ora文件中找到它?

提前致谢!

lsa*_*mon 13

将完整的连接地址放在connectString变量中

{ user : process.env.ORACLE_USER, password : process.env.ORACLE_PASSWORD, connectString : "(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))(CONNECT_DATA =(SID= ORCL)))" }

  • 你现在是我最喜欢的人.谢谢@Isalamon! (3认同)
  • 这比使用 tnsnames.ora 更好,而且更便携。你是冠军! (2认同)