학교 텀프로젝트로 db설계 과목을 듣게 되었다....그런데 rdb를 무조건 oracle을 써야만 하니..

jsp,서블릿은 경험이 많이 부족하고 node.js 로 연동을 시도해 보았다.


1. oracledb 모듈설치(oracle 사에서 공식지원하는 모듈) 


우선 oracle 공식홈페이지의 node.js support를 참고하였다.

https://blogs.oracle.com/opal/entry/introducing_node_oracledb_a_node

git-hub 오픈소스 프로젝트로 나와있다. 윈도우 사용자 이기때문에 

https://github.com/oracle/node-oracledb/blob/master/INSTALL.md 을 참고하여 oracle에서 공식지원하는 node.js 모듈인 oracledb 모듈을 설치하는데 성공하였다.


2. node.js와의 연동 test


dbconfig.js


var oracledb = require('oracledb');
 
module.exports = {
		  user          : "JH",
		  password      : "JH",
		  connectString : "localhost/XE"
};



movieController.js

exports.addMovie = function(req,res){
	
	oracledb.getConnection(dbConfig,
		function(err,connection){
		
			 if (err) {
			      console.error(err.message);
			      return;
			 }
			 console.log(req.body);
			 connection.execute(
			 "insert into Movie VALUES(:CODE,:NAME,:CATEGORY,:RUNNINGTIME,:DIRECTOR,:OUTLINE,:IMAGE)"
		    ,[1,req.body.name,req.body.category,req.body.runningtime,req.body.director,req.body.outline,req.body.image]
		    ,
			 function(err){
				if(err){
					console.log(err.message);
					return;
				}
				connection.commit(function(err){
					if(err){
						console.log(err.message);
						return;
					}
					res.render('addMovie');
				 })
		     });
          });
}






위와 같은 방식으로 config 폴더에 db configure set을 하고 controller에서 간단한 insert를 해보았다..


아래는 간단하게 만든 html 폼이다. 



이렇게 폼까지 만들고 db에 insert를 해보았으나 한글깨짐 문제가 발생한다. 

select하고 콘솔에 출력해보았더니(빨간색 동그라미 친부분) 한글이 깨져서 나온다.


열심히 구글링 해서 (http://www.enjoydev.net/xe_new/index.php?mid=en_devboard&category=556&document_srl=289&listStyle=viewer)


sysdba로 접속 후..

update sys.props$ set value$='KO16MSWIN949' where name='NLS_CHARACTERSET'; 
update sys.props$ set value$='KO16MSWIN949' where name='NLS_NCHAR_CHARACTERSET'; 
update sys.props$ set value$='KOREAN_KOREA.KO16MSWIN949' where name='NLS_LANGUAGE';

위와 같이 캐릭터셋을 변경한 후 오라클 재가동.

commit;

shutdown immediate;

startup;


NLS_LANG 변경.

시작>실행>regedit을 실행 후 oracle>key_xe>nls_lang 값을

korean_korea.ut8로 변경하였다..

oracle character set을 변경하는 방법까지 적용하였으나, 결과는 마찬가지다.





3. oracle node.js 파트 담당자가 언어 서포트가 아직 안된다고 한다... (git-hub issue page 공식답변)


문제해결!

 

실행 -> regedit -> NLS_LANG을 AMERICAN_AMERICA.UTF8로 설정 후 한글이 정상적으로 출력되었다.


NLS_LANG이 KOREAN이면 오히려 한글 출력이 안되고 꼭 아메리칸 아메리카 UTF8로 설정해야 한다.


블로그 이미지

종환 Revolutionist-JongHwan

github.com/alciakng 항상 겸손하자.

댓글을 달아 주세요