Node.js
Oracle과 Node.js
수색…
Oracle DB에 연결
오라클 데이터베이스에 연결하는 가장 쉬운 방법은 oracledb
모듈을 사용하는 것입니다. 이 모듈은 Node.js 앱과 Oracle 서버 간의 연결을 처리합니다. 다른 모듈과 마찬가지로 설치할 수 있습니다.
npm install oracledb
이제 ORACLE 연결을 만들어야하며 나중에 연결할 수 있습니다.
const oracledb = require('oracledb');
oracledb.getConnection(
{
user : "oli",
password : "password",
connectString : "ORACLE_DEV_DB_TNS_NAME"
},
connExecute
);
connectString "ORACLE_DEV_DB_TNA_NAME"은 oracle 인스턴트 클라이언트가 설치된 디렉토리 또는 같은 디렉토리에있는 tnsnames.org 파일에 있습니다.
개발 기계에 Oracle 인스턴트 클라이언트가 설치되어 있지 않은 경우 운영 체제의 instant client installation guide
를 따르십시오.
매개 변수없이 연결 개체 쿼리
이제는 connExecute-Function을 사용하여 쿼리를 실행할 수 있습니다. 쿼리 결과를 객체 또는 배열로 가져 오는 옵션이 있습니다. 결과는 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);
});
}
풀링되지 않은 연결을 사용 했으므로 연결을 다시 해제해야합니다.
function connRelease(connection)
{
connection.close(
function(err) {
if (err) {
console.error(err.message);
}
});
}
객체에 대한 출력은 다음과 같습니다.
[ { name: 'C1' }, { name: 'C2' } ]
[ { C1: 'test', C2: 'oracle' } ]
배열에 대한 출력은
[ { name: 'C1' }, { name: 'C2' } ]
[ [ 'test', 'oracle' ] ]
보다 쉽게 쿼리 할 수 있도록 로컬 모듈 사용
ORACLE-DB에서 쿼리를 단순화하기 위해 다음과 같이 쿼리를 호출 할 수 있습니다.
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);
});
연결 구성 및 실행은 다음과 같은 내용으로이 oracle.js 파일에 포함되어 있습니다.
'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;
oracle 객체를 호출하기 위해서는 queryArray와 queryObject 메소드가 둘 다 있어야합니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow