Node 에서 Oracle DB 사용하기
2023. 4. 25. 10:54ㆍ프로그래밍
1. Oracle Instant Client 설치
아래의 사이트를 방문해서 OS에 맞는 프로그램을 다운로드 받고 설치하시면 됩니다.
https://www.oracle.com/kr/database/technologies/instant-client/downloads.html
2. oracledb 설치
npm install oracledb
3. db 정보 파일 생성
db에 대한 정보를 포함하는 파일을 별도로 만들어줍니다.
/db/dbconfig.js
module.exports = {
user : "abc",
password : "abc",
connectString : "1.1.1.1:1521/EX",
externalAuth : false
};
4. oracle instant client 연결
/src/init.js
import * as os from 'os';
import oracledb from 'oracledb';
function init_oracle() {
console.log(os.platform() + " / " + os.platform().toLowerCase().indexOf("win"));
//oracle client 경로 설정
let flag_run_on_windows = (os.platform().toLowerCase().indexOf("win") >= 0);
if( flag_run_on_windows )
{
// Windows
oracledb.initOracleClient({ libDir: 'C:\\dev\\instantclient_21_9' });
}
else
{
// Docker(Linux)
oracledb.initOracleClient({ libDir: '/usr/lib/oracle/18.5/client64/lib' });
}
}
5. db 접근 코드 작성
/src/order.js
import * as dbconfig from "../db/dbconfig.js";
import oracledb from 'oracledb';
async function query_execute(query, flag_commit = false) {
console.log(" - query: " + query);
let connection = await oracledb.getConnection(dbConfig);
let binds = {};
let options = {
outFormat: oracledb.OUT_FORMAT_OBJECT // query result format
};
let result = await connection.execute(query, binds, options);
// 커밋
if( flag_commit )
{
let query_commit = "COMMIT";
await connection.execute(query_commit, binds, options);
}
await connection.close();
if (result === undefined ||
result.rows === undefined ||
result.rows.length === undefined ||
result.rows.length === 0) {
return undefined;
}
return result;
}
async function get_order_json() {
let query =
" SELECT name, TO_CHAR(order_date, 'yyyy-mm-dd / hh24:MM:ss') AS dt " +
" FROM tbl_order " +
" WHERE TRUNC(order_date) >= '2023-01-01' " +
" ORDER BY order_date ";
let result = await query_execute(query);
if (result === undefined) { return undefined; }
let str_json_result = '[';
for (let i = 0; i < result.rows.length; i++)
{
if (i > 0) { str_json_result += ','; }
str_json_result +=
'{"name":"' + result.rows[i].NAME + '",' +
'"date":"' + result.rows[i].DT + '"}';
}
str_json_result += ']';
console.log(" - str_json_result: " + str_json_result);
return JSON.parse(str_json_result);
}
사업자 정보 표시
주식회사 셀엑손 (CELLAXON Inc. | 이상효 | 경기도 화성시 동탄감배산로 143, 202동 2409호 | 사업자 등록번호 : 304-81-34245 | TEL : 031-8043-3215 | Mail : ryan@cellaxon.com | 통신판매신고번호 : 2022-화성동탄-0844호 | 사이버몰의 이용약관 바로가기
'프로그래밍' 카테고리의 다른 글
HTML에서 여러 동영상을 연속으로 재생하기(video tag) (0) | 2023.09.18 |
---|---|
sveltekit / 500 Internal Error, ReferenceError: localStorage is not defined 해결 방법 (0) | 2023.09.06 |
자바스크립트에서 날짜를 YYYY-MM-DD 포맷으로 출력 (0) | 2023.05.09 |
Node 19 + Oracle Instant Client를 사용하는 Docker 파일 만들기 (0) | 2023.04.25 |