Szukaj…


Połącz się z Oracle DB

Bardzo łatwym sposobem połączenia z bazą danych ORACLE jest użycie modułu oracledb . Ten moduł obsługuje połączenie między aplikacją Node.js a serwerem Oracle. Możesz zainstalować go jak każdy inny moduł:

npm install oracledb

Teraz musisz utworzyć połączenie ORACLE, które możesz później wyszukać.

const oracledb = require('oracledb');

oracledb.getConnection(
  {
    user          : "oli",
    password      : "password",
    connectString : "ORACLE_DEV_DB_TNS_NAME"
  },
  connExecute
);

ConnectString „ORACLE_DEV_DB_TNA_NAME” może znajdować się w pliku tnsnames.org w tym samym katalogu lub w którym jest zainstalowany klient błyskawiczny Oracle.

Jeśli nie masz zainstalowanego klienta Oracle na swoim komputerze programistycznym, możesz postępować zgodnie z instant client installation guide dla swojego systemu operacyjnego.

Zapytaj obiekt połączenia bez parametrów

Use może teraz używać funkcji connExecute do wykonywania zapytania. Masz opcję uzyskania wyniku zapytania jako obiektu lub tablicy. Wynik jest wydrukowany do pliku console.log.

function connExecute(err, connection)
{
    if (err) {
        console.error(err.message);
        return;
    }
    sql = "select 'test' as c1, 'oracle' as c2 from dual";
    connection.execute(sql, {}, { outFormat: oracledb.OBJECT }, // or oracledb.ARRAY
        function(err, result)
        {
            if (err) {
                console.error(err.message);
                connRelease(connection);
                return;
            }
            console.log(result.metaData);
            console.log(result.rows);
            connRelease(connection);
        });
}

Ponieważ użyliśmy połączenia niebędącego pulą, musimy ponownie zwolnić nasze połączenie.

function connRelease(connection)
{
  connection.close(
    function(err) {
      if (err) {
        console.error(err.message);
      }
    });
}

Wyjściem dla obiektu będzie

[ { name: 'C1' }, { name: 'C2' } ]
[ { C1: 'test', C2: 'oracle' } ]

i wynik dla tablicy będzie

[ { name: 'C1' }, { name: 'C2' } ]
[ [ 'test', 'oracle' ] ]

Korzystanie z modułu lokalnego w celu łatwiejszego tworzenia zapytań

Aby uprościć tworzenie zapytań z ORACLE-DB, możesz wywołać swoje zapytanie w następujący sposób:

const oracle = require('./oracle.js');

const sql = "select 'test' as c1, 'oracle' as c2 from dual";
oracle.queryObject(sql, {}, {})
    .then(function(result) {
        console.log(result.rows[0]['C2']);
    })
    .catch(function(err) {
        next(err);
    });

Tworzenie połączenia i wykonywanie jest zawarte w tym pliku oracle.js z zawartością w następujący sposób:

'use strict';
const oracledb = require('oracledb');

const oracleDbRelease = function(conn) {
  conn.release(function (err) {
    if (err)
      console.log(err.message);
  });
};

function queryArray(sql, bindParams, options) {
    options.isAutoCommit = false; // we only do SELECTs
 
    return new Promise(function(resolve, reject) {
        oracledb.getConnection(
                  {
                    user          : "oli",
                    password      : "password",
                    connectString : "ORACLE_DEV_DB_TNA_NAME"
                })
        .then(function(connection){
            //console.log("sql log: " + sql + " params " + bindParams);
            connection.execute(sql, bindParams, options)
            .then(function(results) {
                resolve(results);
                process.nextTick(function() {
                    oracleDbRelease(connection);
                });
            })
            .catch(function(err) {
                reject(err);
 
                process.nextTick(function() {
                    oracleDbRelease(connection);
                        });
                    });
            })
            .catch(function(err) {
                reject(err);
            });
    });
}

function queryObject(sql, bindParams, options) {
    options['outFormat'] = oracledb.OBJECT; // default is oracledb.ARRAY
    return queryArray(sql, bindParams, options);
}

module.exports = queryArray; 
module.exports.queryArray = queryArray; 
module.exports.queryObject = queryObject;

Zauważ, że masz obie metody queryArray i queryObject do wywołania obiektu Oracle.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow