Recherche…


Se connecter à Oracle DB

Un moyen très simple de se connecter à une base de données ORACLE consiste à utiliser le module oracledb . Ce module gère la connexion entre votre application Node.js et le serveur Oracle. Vous pouvez l'installer comme n'importe quel autre module:

npm install oracledb

Vous devez maintenant créer une connexion ORACLE, que vous pouvez interroger ultérieurement.

const oracledb = require('oracledb');

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

ConnectString "ORACLE_DEV_DB_TNA_NAME" peut vivre dans un fichier tnsnames.org situé dans le même répertoire ou sur lequel votre client instantané Oracle est installé.

Si vous ne disposez d'aucun client instantané Oracle sur votre ordinateur de développement, vous pouvez suivre le instant client installation guide à votre système d'exploitation.

Interroger un objet de connexion sans paramètres

Utiliser peut maintenant utiliser la fonction connExecute pour exécuter une requête. Vous avez la possibilité d'obtenir le résultat de la requête en tant qu'objet ou tableau. Le résultat est imprimé sur 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);
        });
}

Comme nous avons utilisé une connexion sans pool, nous devons relancer notre connexion.

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

La sortie pour un objet sera

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

et la sortie pour un tableau sera

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

Utiliser un module local pour faciliter les requêtes

Pour simplifier votre requête à partir d'ORACLE-DB, vous pouvez appeler votre requête comme ceci:

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 construction de la connexion et son exécution sont incluses dans ce fichier oracle.js avec le contenu suivant:

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

Notez que vous disposez des deux méthodes queryArray et queryObject pour appeler votre objet oracle.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow