Node.js
Node.js z Oracle
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.