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

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


Category

  신훈재(2004-06-18 14:10:40, Hit : 9726, Vote : 1718
 [자바] 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 9745 1905
  [Java/PHP] [자바] JDBC-ODBC 연결 예제  신훈재 2004/06/18 9726 1718
21   [Java/PHP] [자바] 시스템 프로퍼티를 이용한 드라이버 로드  신훈재 2004/06/18 5670 1478
20   [Java/PHP] [자바] 오라클 각종 에러  신훈재 2004/06/18 6670 1718
19   [Java/PHP] [자바] 활용팁(오라클)  신훈재 2004/06/18 6171 1647
18   [Java/PHP] [자바] ResultSet 질의결과  신훈재 2004/06/18 6285 1357
17   [Java/PHP] [자바] Select예제  신훈재 2004/06/18 6423 1599
16   [Java/PHP] [자바] Update예제  신훈재 2004/06/18 5582 1381
15   [Java/PHP] [자바] Insert 예제  신훈재 2004/06/18 6651 1719
14   [Java/PHP] [자바] Query Statement  신훈재 2004/06/18 7939 1522
13   [Java/PHP] [자바] JDBC Connect  신훈재 2004/06/18 6982 1541
12   [Java/PHP] [자바] JDBC 코딩시 주위사항(jsp, servlet)  신훈재 2004/06/18 7469 1402
11   [Java/PHP] [자바] 여러종류의 데이타베이스 테스트 소스  신훈재 2004/06/18 6623 1506
10   [Java/PHP] [자바] JDBC 테스트 소스(오라클)  신훈재 2004/06/18 5607 1385
9   [Java/PHP] [소스] snmp 를 이용한 시스템 가용율 구하기 예제  김영대 2003/12/01 9795 2142
8   [Java/PHP] [소스] Oolong 언어를 이용한 Factorial 계산 프로그램 예제  김영대 2003/11/10 6813 1746
7   [Java/PHP] [문서] Java Web Services Development Pack (JWSDP) 1.0 tutorial  김영대 2003/03/24 5990 1481
6   [Java/PHP] [문서] Java Swing v1.1.1 도움말  김영대 2003/03/24 5928 1512
5   [Java/PHP] [문서] Java Servlet Development Kit (JSDK) v2.3 도움말  김영대 2003/03/24 5693 1498
4   [Java/PHP] [문서] Java 2 SDK, Enterprise Edition (J2EE) 1.3.1 도움말  김영대 2003/03/24 5782 1518

1 [2]
 

Copyright 1999-2018 Zeroboard / skin by zero