::: 강좌/소스/문서 :::

강좌/소스/문서 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  신훈재(2004-06-18 14:10:40, Hit : 10444, Vote : 1770
 [자바] JDBC-ODBC 연결 예제

[ JDBC-ODBC Bridge Driver - sun.jdbc.odbc.JdbcOdbcDriver.class ]

--------------------------------------------------------------------------------

◈ sun package : JDK의 class Library중에 비공개 class Library로 rt.jar file내에 압축되어 있음.
                sun.jdbc.odbc package에 ODBC-JDBC Bridge Driver로 JdbcOdbcDriver.class file이
                제공된다.

◈ sun.jdbc.odbc.JdbcOdbcDriver.class Bug : JDK 1.2, 1.2.1의 JDBC-ODBC 브리지의 버그로 인해
              한글을 포함한 모든 멀티바이트 인코딩 ("utf-8", "euc-kr", "euc-jp" 등등)의 문자를
              사용하는 경우 오동작한다.
              위 Bug에 관련된 자료는 김덕태씨 홈페이지에 자료가 정리되어 있습니다. 물론 해결책도.
              그 내용은 다음과 같습니다.

JDK12JdbcOdbcBugChecker.java 파일을 실행시켜보면 Bug를 Check해 볼수 있다. (아래 참조)
해결책은 다음과 같이 하면 된다.
1. BridgeDriverbugpatch12.zip file을 download 받으세요.
2. JDK1.2\jre\lib>jar xvf BridgeDriverbugpatch12.zip
3. JDK1.2\jre\lib>jar ufv0 rt.jar sun
4. jar에 의해 풀린 sun directory를 삭제하세요.


◈ MS Access를 이용한 JDBC-ODBc Bridge Driver Example

   MS Access에서 Database and Table creation

1. 설정 - 제어판 - ODBC menu 선택
2. ODBC Data Source Administrator Dialog에서 System DSN tapped menu select
3. Add button Click, Microsoft Access Driver(*.mdb) 항목 select, 마침 button click
4. ODBC Microsoft Access 97 설정 Dialog창이 나타나는데, 여기서 "데이터 원본 이름(N)" Textfiled에
5. Database name을 입력한다.(specular로 입력) 그리고, 작성을 클릭하여 저장한다.(specular.mdb로 저장)
6. MS Access를 실행하여 저장된 데이터베이스를 open하여 Table을 생성한다. (AddressBook table)


◈    JDBC-ODBC Driver Example

       import java.sql.*;

       public class ODBCEx {

            public static void main(String args[]) throws Exception {

                 System.out.println("Loading the Driver....");

                 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

                 System.out.println("Connecting the DB...");

                 Connection con = DriverManager.getConnection("jdbc:odbc:specular");

                 Statement stmt = con.createStatement();

                 String query = "INSERT INTO AddressBook VALUES('전홍성','경기도 남양주시','344-4444')";

                 stmt.executeUpdate(query);

                 ResultSet rset = stmt.executeQuery("SELECT * FROM AddressBook");

                 while(rset.next()) {

                        System.out.println(rset.getString(1)+"\t"+rset.getString(2)+"\t"+rset.getString(3));

                 }

           }

      }  

--------------------------------------------------------------------------------

public class JDK12JdbcOdbcBugChecker {
    public static void main(String[] args) {

        try {
            System.out.println("Checking iso-8859-1 conversion...");
            String str1 = "\u00e1";
            byte[] bytes1 = new byte[] { (byte) 0xe1, (byte) 0 };
            checkBug(str1, bytes1, "iso-8859-1");

            System.out.println("Checking utf-8 conversion...");
            String str2 = "\uac00";
            byte[] bytes2 = new byte[] { (byte) 0xea, (byte) 0xb0, (byte) 0x80, (byte) 0 };
            checkBug(str2, bytes2, "utf-8");

            System.out.println("Checking euc-kr conversion...");
            String str3 = "\uac00";
            byte[] bytes3 = new byte[] { (byte) 0xb0, (byte) 0xa1, (byte) 0 };
            checkBug(str3, bytes3, "euc-kr");

            System.out.println("Bug checking ended.");
        } catch( Throwable ex) {
            System.out.println("Bug checking Failed: " + ex);
        }
    }

    static void checkBug(String str, byte[] bytes, String encoding)
        throws java.io.UnsupportedEncodingException {

        sun.jdbc.odbc.JdbcOdbcObject converter = new sun.jdbc.odbc.JdbcOdbcObject();

        byte[] converted = converter.CharsToBytes(encoding, str.toCharArray());
        if (converted.length != bytes.length) {
            System.out.println("Bug: length of converted bytes is incorrect.");
        } else {
            for(int i = 0; i < bytes.length; i++)
                if (converted[i] != bytes[i]) {
                    System.out.println("Bug: incorrectly converted bytes.");
                    break;
                }
        }
            
        String converted2 = converter.BytesToChars(encoding, bytes);
        if (converted2.length() != str.length()) {
            System.out.println("Bug: length of converted string is incorrect.");
        } else {
            for(int i = 0; i < str.length(); i++)
                if (converted2.charAt(i) != str.charAt(i)) {
                    System.out.println("Bug: incorrectly converted string.");
                    break;
                }
        }
    }
}








23   [Java/PHP] [자바] DB 컨넥션 풀  신훈재 2004/06/18 10304 1967
  [Java/PHP] [자바] JDBC-ODBC 연결 예제  신훈재 2004/06/18 10444 1770
21   [Java/PHP] [자바] 시스템 프로퍼티를 이용한 드라이버 로드  신훈재 2004/06/18 5830 1505
20   [Java/PHP] [자바] 오라클 각종 에러  신훈재 2004/06/18 6899 1919
19   [Java/PHP] [자바] 활용팁(오라클)  신훈재 2004/06/18 6342 1672
18   [Java/PHP] [자바] ResultSet 질의결과  신훈재 2004/06/18 6468 1386
17   [Java/PHP] [자바] Select예제  신훈재 2004/06/18 8460 1632
16   [Java/PHP] [자바] Update예제  신훈재 2004/06/18 5750 1422
15   [Java/PHP] [자바] Insert 예제  신훈재 2004/06/18 6838 1758
14   [Java/PHP] [자바] Query Statement  신훈재 2004/06/18 8194 1564
13   [Java/PHP] [자바] JDBC Connect  신훈재 2004/06/18 11055 1576
12   [Java/PHP] [자바] JDBC 코딩시 주위사항(jsp, servlet)  신훈재 2004/06/18 7996 1444
11   [Java/PHP] [자바] 여러종류의 데이타베이스 테스트 소스  신훈재 2004/06/18 7012 1542
10   [Java/PHP] [자바] JDBC 테스트 소스(오라클)  신훈재 2004/06/18 5776 1417
9   [Java/PHP] [소스] snmp 를 이용한 시스템 가용율 구하기 예제  김영대 2003/12/01 10616 2202
8   [Java/PHP] [소스] Oolong 언어를 이용한 Factorial 계산 프로그램 예제  김영대 2003/11/10 11832 1799
7   [Java/PHP] [문서] Java Web Services Development Pack (JWSDP) 1.0 tutorial  김영대 2003/03/24 6179 1525
6   [Java/PHP] [문서] Java Swing v1.1.1 도움말  김영대 2003/03/24 6105 1552
5   [Java/PHP] [문서] Java Servlet Development Kit (JSDK) v2.3 도움말  김영대 2003/03/24 5863 1536
4   [Java/PHP] [문서] Java 2 SDK, Enterprise Edition (J2EE) 1.3.1 도움말  김영대 2003/03/24 5981 1560

1 [2]
 

Copyright 1999-2020 Zeroboard / skin by zero