2012/08/25 09:51

DB2 연결하고. 사용하기.. JAVA




흠,, 어제부터 오늘까지, DB2 때문에 이렇게 삽질을 하게 될 줄은 몰랐다.

4년 전까지만 해도 사용했던 db인데.. 
팀이 바뀌고 이제 보니, 모든게 새로웠다.
물론, 그떈 아무것도 모를 신입 떄이긴 하지만.. 

어제오늘 가장 삽질을 하게 만든건, data 타입변경.. 
아무리 뒤지고 찾아도, 제대로 실행되지 않는다.. 줴길.. 

그리고 이제서야 해결.. 

모르면,, 몸이 고생.. 이건, 만고의 진리다.. 

# AS/400 DB2
jdbc.driverClassName=com.ibm.as400.access.AS400JDBCDriver
jdbc.url=jdbc:as400:IP
jdbc.username=user
jdbc.password=password

JDBC JAR파일은 AS400 DB2의 경우 jt400.jar를 찾아서 사용하시길.. 

메이븐을 사용하신다면,
maven repository에서 관리를 안해주는 관계로 
jar파일을 다운받아, 적당한 위치? 에 놓도록 한다. 

<!-- ibm db2 -->
<dependency>
<groupId>com.ibm.as400.access</groupId>
<artifactId>AS400JDBCDriver</artifactId>
<version>1.0</version>
</dependency>

그렇다면 repository 경로내에, 
repository/com/ibm/as400/access/AS400JDBCDriver/1.0/ 아래에 AS400JDBCDriver-1.0.jar 파일로 넣으면 된다.

흠, 
개발시 사용할 SQL의 오라클, MSSQL과 DB2의 다른점 몇가지 적어보자면..
1. DATE 타입이 다름.
current date, current timestamp 를 사용.
2. null처리시 coalesce 사용 ( coalesce( A, '-') )
3. 문자열 concat시에는 || 를 사용
4. rownum의 경우 mssql과 동일 
row_number() over ( order by id desc )
5. CTE사용가능
6. 문자열 <-> date 타입변경시.
'2012-08-25' 문자열 -> '2012-08-25' date
CAST( '2012-08-25' AS DATE)
'2012-08-25' date-> '2012-08-25' 문자열
CHAR(WRT_DT, iso)
이 부분에서 DATE('2012-08-25')를 사용해서는 일반 에뮬레이터 내에서 쿼리가 성공적으로 이뤄졌으나,
maBatis를 이용한 개발환경 내에선, 계속
java.sql.SQLSyntaxErrorException: [SQL0418] Use of parameter marker not valid.
위와 같은 에러가 난다.
그래서 결국 찾아낸 것이 CAST이다.

아,,
정말 이길은 멀고,, 멀~~~~~~~고 험하다.. 

오늘도 하나 배워간다.. 

++
참고로 이 DB는 DB2 UDB iSeries_V5R3(New DB2 for i5/OS)이다.

덧글

  • 작은가게 2014/08/19 17:05 # 삭제 답글

    안녕하세요
    위내용대로 설정하니 접속이 잘됩니다(감사합니다)
    다만 maven을 사용중이라 다음과 같이 추가 후 실행하니 접속이 안됩니다.
    <dependency>
    <groupId>net.sf.jt400</groupId>
    <artifactId>jt400</artifactId>
    <version>6.7</version>
    </dependency>
    혹시 현재도 위의 방법대로 하시는지 궁금합니다
    또한 첨부파일은 jt400.jar 는 버전이 몇인가요?
  • 말근우슴 2014/09/15 18:21 # 답글

    안녕하세요.
    dependency를 위와 같이 설정하시겠다면
    설정해주신 경로에 넣어주셔야합니다.
    예를 들면,
    repository/net/sf/jt400/jt400/6.7/ 아래 경로에 해당 라이브러리를 넣으시면
    메이븐이 정상적으로 인식할 것입니다.
    로컬 repository를 설정을 통해 변경하지 않으셨다면 내문서내에 사용자ID 아래 .m2 폴더가 default입니다.
  • taeji61 2019/10/02 10:29 # 삭제 답글

    안녕하세요~ 저도 동일한 에러로 이틀째 고생하고 있었는데, 해결책을 찾은것 같아 너무 고맙습니다. 그런데 본문에서 cast 때문이라고 하셨는데, 혹시 어떻게 해결하셨는지요?
댓글 입력 영역