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

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


Category

  신훈재(2004-06-18 14:10:40, Hit : 9046, Vote : 1672
 [자바] 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 9512 1857
  [Java/PHP] [자바] JDBC-ODBC 연결 예제  신훈재 2004/06/18 9046 1672
21   [Java/PHP] [자바] 시스템 프로퍼티를 이용한 드라이버 로드  신훈재 2004/06/18 5487 1425
20   [Java/PHP] [자바] 오라클 각종 에러  신훈재 2004/06/18 6490 1671
19   [Java/PHP] [자바] 활용팁(오라클)  신훈재 2004/06/18 5997 1603
18   [Java/PHP] [자바] ResultSet 질의결과  신훈재 2004/06/18 6112 1317
17   [Java/PHP] [자바] Select예제  신훈재 2004/06/18 6250 1562
16   [Java/PHP] [자바] Update예제  신훈재 2004/06/18 5414 1333
15   [Java/PHP] [자바] Insert 예제  신훈재 2004/06/18 6493 1673
14   [Java/PHP] [자바] Query Statement  신훈재 2004/06/18 7763 1468
13   [Java/PHP] [자바] JDBC Connect  신훈재 2004/06/18 6718 1489
12   [Java/PHP] [자바] JDBC 코딩시 주위사항(jsp, servlet)  신훈재 2004/06/18 6138 1357
11   [Java/PHP] [자바] 여러종류의 데이타베이스 테스트 소스  신훈재 2004/06/18 6421 1457
10   [Java/PHP] [자바] JDBC 테스트 소스(오라클)  신훈재 2004/06/18 5437 1345
9   [Java/PHP] [소스] snmp 를 이용한 시스템 가용율 구하기 예제  김영대 2003/12/01 9570 2092
8   [Java/PHP] [소스] Oolong 언어를 이용한 Factorial 계산 프로그램 예제  김영대 2003/11/10 6634 1683
7   [Java/PHP] [문서] Java Web Services Development Pack (JWSDP) 1.0 tutorial  김영대 2003/03/24 5851 1457
6   [Java/PHP] [문서] Java Swing v1.1.1 도움말  김영대 2003/03/24 5782 1470
5   [Java/PHP] [문서] Java Servlet Development Kit (JSDK) v2.3 도움말  김영대 2003/03/24 5520 1454
4   [Java/PHP] [문서] Java 2 SDK, Enterprise Edition (J2EE) 1.3.1 도움말  김영대 2003/03/24 5617 1469

1 [2]
 

Copyright 1999-2017 Zeroboard / skin by zero