반응형
Oracle 연동을 위해, node js 에서는 두가지가 필요하다.
- Oracle client pc 사양에 맞게 다운로드
1. Oracle Client PC 사양에 맞게 다운로드
1) https://www.oracle.com/database/technologies/instant-client/downloads.html
2) 위 사이트에 접속 후, 자신의 PC 사야에 맞게 다운로드한다. (압축 파일이다. 2021/08/26 기준)
3) 다운로드 후, 압축을 해제한다. 그리고, 관리하기 편한 곳으로 이동시킨다. 필자는 C:\에 위치 시켰다.
2. oracledb 모듈 설치
> npm install oracledb
> oracledb@5.2.0 install C:\work\project\nodejs\test1\node_modules\oracledb
> node package/install.js
oracledb ********************************************************************************
oracledb ** Node-oracledb 5.2.0 installed in Node.js 12.18.3 (win32, x64)
oracledb **
oracledb ** To use node-oracledb:
oracledb ** - Oracle Client libraries (64-bit) must be available.
oracledb ** - Follow the installation instructions:
oracledb ** https://oracle.github.io/node-oracledb/INSTALL.html#windowsinstallation
oracledb ********************************************************************************
npm WARN saveError ENOENT: no such file or directory, open 'C:\work\project\nodejs\test1\package.json'
npm WARN enoent ENOENT: no such file or directory, open 'C:\work\project\nodejs\test1\package.json'
npm WARN test1 No description
npm WARN test1 No repository field.
npm WARN test1 No README data
npm WARN test1 No license field.
+ oracledb@5.2.0
updated 1 package and audited 114 packages in 1.285s
found 0 vulnerabilities
3. root / dbconfig.js 생성
module.exports = {
user :"DB ID",
password : "DB PASSWORD",
connectString : "DB IP 또는 localhost:DB Port/Database Name",
externalAuth : false
};
4. Node.js 가 실행될 파일에 oracledb 를 쓰겠다고 선언한다. 그리고, dbconfig.js 도 할당한다.
// database
const oracledb = require('oracledb');
const dbConfig = require("./dbconfig.js");
5. oracledb를 사용하기 위해서는 oracle client 위치를 설정해줘야한다. 1번에서 다운로드 받은 경로를 설정해준다.
// 초기화
function init() {
//oracle client 경로 설정
oracledb.initOracleClient({ libDir: 'C:\\instantclient_19_12' });
}
6. oracle db select를 해본다.
// DB Select
async function selectDatabase() {
console.log("!!!!! db conenction !!!!!");
let connection = await oracledb.getConnection(dbConfig);
let binds = {};
let options = {
outFormat: oracledb.OUT_FORMAT_OBJECT // query result format
};
console.log("!!!!! db select !!!!!");
let result = await connection.execute("select * from PRD_PRD_M", binds, options);
console.log("!!!!! db response !!!!!");
console.log(result.rows[0]);
console.log("!!!!! db close !!!!!");
await connection.close();
}
7. 전체 소스
- [Node.js] 간단히 서버 만들기 게시글에 적용된 소스이다.
const express = require("express");
const app = express();
// database
const oracledb = require('oracledb');
const dbConfig = require("./dbconfig.js");
// 서버 listen
const server = app.listen(3000, ()=> {
console.log("Start serer : localhost:3000");
})
// __dirname : 현재 디렉토리
// page 경로 설정
app.set("views", __dirname + "/views");
// ejs(Embedded JavaScript templates) : html에서 javascript를 같이 쓸 수 있게끔 해주는 engine 이다.
app.set("view engine", "ejs");
app.engine("html", require("ejs").renderFile);
// 라우터 설정
app.get("/", function(req, res) {
res.render("index.html")
});
app.get("/db", function (req, res){
// DB Select
selectDatabase();
// 화면에 보여줄 txt
res.send("execute!!!")
});
// DB Select
async function selectDatabase() {
console.log("!!!!! db conenction !!!!!");
let connection = await oracledb.getConnection(dbConfig);
let binds = {};
let options = {
outFormat: oracledb.OUT_FORMAT_OBJECT // query result format
};
console.log("!!!!! db select !!!!!");
let result = await connection.execute("select * from PRD_PRD_M", binds, options);
console.log("!!!!! db response !!!!!");
console.log(result.rows[0]);
console.log("!!!!! db close !!!!!");
await connection.close();
}
// 초기화
function init() {
//oracle client 경로 설정
oracledb.initOracleClient({ libDir: 'C:\\instantclient_19_12' });
}
// 초기화
init();
8. 위 소스 접속 방법은 아래와 같다.
1) 서버 실행
> node server.js
Start serer : localhost:3000
2) 웹 페이지 접속
http://localhost:3000/db
[Node js 터미널 log]
Start serer : localhost:3000
!!!!! db conenction !!!!!
!!!!! db select !!!!!
!!!!! db response !!!!!
{
실행 ROW 1 데이터 출력
}
!!!!! db close !!!!!
반응형
'Programming > Node.js' 카테고리의 다른 글
[NestJS] AWS DB Tunneling With Mysql Setting (터널링 및 Mysql 설정) (2) | 2024.11.24 |
---|---|
[MongoDB] 랜섬웨어 (READ__ME_TO_RECOVER_YOUR_DATA) (0) | 2024.04.06 |
[Node.js/mongoose DB] cascade delete 기능 구현하기 (0) | 2021.12.10 |
[Node.js/AdminBro] Admin Page panel + MongoDB (0) | 2021.10.27 |
[Node.js] 간단히 서버 만들기 (0) | 2021.08.26 |