Ricerca…


Connetti a Oracle DB

Un modo molto semplice per connettersi a un database ORACLE è utilizzando il modulo oracledb . Questo modulo gestisce la connessione tra l'app Node.js e il server Oracle. Puoi installarlo come qualsiasi altro modulo:

npm install oracledb

Ora devi creare una connessione ORACLE, che puoi in seguito interrogare.

const oracledb = require('oracledb');

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

Il connectString "ORACLE_DEV_DB_TNA_NAME" può vivere in un file tnsnames.org nella stessa directory o in cui è installato il tuo client istantaneo Oracle.

Se non si dispone di alcun client istantaneo Oracle installato sul proprio computer di sviluppo, è possibile seguire la instant client installation guide per il proprio sistema operativo.

Interrogare un oggetto di connessione senza parametri

Utilizzare ora può utilizzare la funzione connExecute per l'esecuzione di una query. Hai la possibilità di ottenere il risultato della query come oggetto o array. Il risultato è stampato su 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);
        });
}

Poiché abbiamo utilizzato una connessione non di pooling, dobbiamo rilasciare nuovamente la nostra connessione.

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

L'output per un oggetto sarà

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

e l'output per un array sarà

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

Utilizzo di un modulo locale per interrogazioni più semplici

Per semplificare le tue query da ORACLE-DB, puoi chiamare la tua query in questo modo:

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);
    });

La creazione della connessione e l'esecuzione sono inclusi in questo file oracle.js con il contenuto come segue:

'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;

Nota che hai entrambi i metodi queryArray e queryObject per chiamare sul tuo oggetto oracle.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow