Node 에서 Oracle DB 사용하기
2023. 4. 25. 10:54ㆍ프로그래밍
1. Oracle Instant Client 설치
아래의 사이트를 방문해서 OS에 맞는 프로그램을 다운로드 받고 설치하시면 됩니다.
https://www.oracle.com/kr/database/technologies/instant-client/downloads.html
Oracle Instant Client Downloads | Oracle 대한민국
죄송합니다. 검색 내용과 일치하는 항목을 찾지 못했습니다. 원하시는 정보를 찾는 데 도움이 되도록 다음을 시도해 보십시오. 검색에 사용하신 키워드의 철자가 올바른지 확인하십시오. 입력
www.oracle.com
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 |