StoredProcedure 한글 문제 및 getConnection 문제

by 조경석 posted Jun 11, 2014

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Window7 32bit, Linux 64bit 등
CUBRID Ver.
[cubrid_rel] 수행 결과
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
java, php, odbc 등 입력

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------

OS: Windows 7 64bit

CUBRID Ver: 9.3

CUBRID Tool Ver: Cubrid 9.3 (9.3.0.0206)

응용 환경: java


환경 변수

set CUBRID


CUBRID=D:CUBRID

CUBRID_DATABASES=D:CUBRIDdatabases

CUBRID_LANG=ko_KR.utf8

CUBRID_MODE=client


cubrid.conf에 java_stored_procedure=yes 추가하였음


1. Stored Procedure Parameter 한글값 문제


CSQL을 사용하여 Stored Procedure를 호출하면 java Class에 Parameter로 한글이 정확히 전달됩니다.


하지만 CUBRID Manager에서 Stored Procedure를 호출하면 한글이 깨져서 전달됩니다.


java static method에서 Parameter로 들어온 값을 Log로 찍어보면 CSQL로 실행하는 경우와 Cubrid Manager에서 실행하는 경우 동일한 한글을 사용해도 Cubrid Manager에서 들어온 경우에는 깨져서 들어옵니다.


DB는 ko_KR.utf8로 설정되어 있으며, Cubrid Manager에서도 문자집합이 UTF-8으로 되어 있습니다.


CUBRID Manager에서 Stored Procedure용 class에 Parameter로 한글값을 정상적으로 넘기기 위해서는 어떻게 하여야 하나요?



2. getConnection 한글 문제


또한 Stored Procedure용 class에서 getConnection을 하는 경우


Connection conn = DriverManager.getConnection("jdbc:default:connection:"); 로 하는 경우에는 PreparedStatement에 한글을 넘기면 한글이 EUC-KR로 넘어가는 것을 확인하였습니다. 


그래서 이 경우에는 Connection conn = DriverManager.getConnection("jdbc:cubrid:localhost:30000:XXX:::?charset=UTF-8", "dba", "PASSWORD");  와 같은 형식으로 넘기면서 한글이 정상적으로 진행되는 것을 확인하였습니다.


UTF-8의 Charset으로 한글을 넘기기 위해서는 반드시 아래와 같은 getConnection을 하여야 하나요?


답변 부탁드립니다.