* ȸ¿ø°¡ÀÔ * ¾ÆÀ̵ð/ºñ¹Ð¹øÈ£ ã±â   ID PW
Last Modified : 2007.02.02

¿À¶óŬ JDBC µå¶óÀ̹ö ¼³Ä¡ ¹× Å×½ºÆ®

1. ¿À¶óŬ JDBC µå¶óÀ̹ö ¼³Ä¡

ÀÚ¹Ù JDBC ÇÁ·Î±×·¡¹ÖÀ» Çϱâ À§Çؼ­´Â µ¥ÀÌÅͺ£À̽º¿¡ ¸Â´Â JDBCµå¶óÀ̹ö¸¦ ¼³Ä¡ÇØ¾ß ÇÕ´Ï´Ù.
¿À¶óŬÀÇ °æ¿ì¿¡´Â ¿À¶óŬ¿ë JDBC µå¶óÀ̹ö¸¦ µû·Î ±¸ÀÔÇϰųª ÀÎÅͳݿ¡¼­ ã¾Æ¼­ ¼³Ä¡ÇÒ Çʿ䰡 ¾ø½À´Ï´Ù. ¿À¶óŬ¿ë JDBCµå¶óÀ̹öµéÀº [ORACLE_HOME]\jdbc\lib ¿¡ ÀÖ½À´Ï´Ù.

[ORACLE_HOME]

¿©±â¼­ [ORACLE_HOME]Àº ¿À¶óŬ ¼³Ä¡°­Á¿¡¼­ ¼³Ä¡°úÁ¤ Áß Ã¹¹øÂ° ±×¸²ÀÎ ¼³Ä¡¹æ½Ä â¿¡¼­ OraclȨ À§Ä¡¿¡ ÀÔ·ÂÇß´ø µð·ºÅ丮¸¦ ÆíÀÇ»ó ±âȣȭÇÑ °ÍÀÔ´Ï´Ù.
Âü°í·Î ÇÊÀÚÀÇ [ORACLE_HOME]Àº F:\oracle\product\10.2.0\db_1 ÀÔ´Ï´Ù.

ÀÌÁ¦ [ORACLE_HOME]\jdbc\lib µð·ºÅ丮¿¡ ÀÖ´Â µå¶óÀ̹ö Áß¿¡¼­ Thinµå¶óÀ̹öÀÎ classes12.jar À» CLASSPATH ¿¡ Ãß°¡ÇÕ´Ï´Ù.
ÀÚ¹Ù ¼³Ä¡¿¡¼­ ¼³Á¤ÇÑ ´ë·Î ÇöÀç´Â . ¸¸ CLASSPATH ¿¡ ÀÖ½À´Ï´Ù.
ÇÊÀÚ´Â .;F:\oracle\product\10.2.0\db_1\jdbc\lib\classes12.jar ¸¦ CLASSPATH ¿¡ Ãß°¡Çß½À´Ï´Ù.
´ÙÀ½À¸·Î ¸í·É ÇÁ·ÒÇÁÆ®¸¦ »õ·Î ¶ç¿ì°í set classpath ÀÌ¿ëÇÏ¿© CLASSPATH °¡ Á¦´ë·Î ÀâÇû´ÂÁö È®ÀÎÇÕ´Ï´Ù.

F:\>set classpath
CLASSPATH=.;F:\oracle\product\10.2.0\db_1\jdbc\lib\classes12.jar;

F:\>

À̰ÍÀ¸·Î ¿À¶óŬ JDBC µå¶óÀ̹ö ¼³Ä¡¸¦ ¿Ï·áÇß½À´Ï´Ù.

2. Å×½ºÆ®

JDBC µå¶óÀ̹ö ¼³Ä¡°¡ ¿Ã¹Ù¸£°Ô ¼³Ä¡µÇ¾ú´ÂÁö °£´ÜÇÑ Å×½ºÆ® ÆÄÀÏÀ» ¸¸µé¾î¼­ Å×½ºÆ® ÇϰڽÀ´Ï´Ù.
´ÙÀ½ Å×½ºÆ® ÆÄÀÏÀº scott °èÁ¤ÀÇ table Áß emp Å×À̺íÀ» Äõ¸®ÇÏ¿© ·¹Äڵ带 »Ñ·ÁÁÖ´Â ÆÄÀÏÀÔ´Ï´Ù.

GetEmp.java

import java.sql.*; 

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

    // À§ ºÎºÐÀº ¼³Ä¡°úÁ¤¿¡¼­ ÀÚ½ÅÀÌ Á¤ÇÑ Á¤º¸¿¡ ¸Â°Ô ¹Ù²Û´Ù.
    String DB_URL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
    String DB_USER = "scott";
    String DB_PASSWORD = "tiger";

    Connection conn;
    Statement stmt;
    ResultSet rs;

    String query = "select * from emp";

    try {
      // µå¶óÀ̹ö¸¦ ·ÎµùÇÑ´Ù.
      Class.forName("oracle.jdbc.driver.OracleDriver");

      // µ¥ÀÌÅͺ£À̽ºÀÇ ¿¬°áÀ» ¼³Á¤ÇÑ´Ù.
      conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);

      // Statement¸¦ °¡Á®¿Â´Ù.
      stmt = conn.createStatement();

      // SQL¹®À» ½ÇÇàÇÑ´Ù.
      rs = stmt.executeQuery(query);

      while (rs.next()) { 
        String empno = rs.getString(1);
        String ename = rs.getString(2);
        String job = rs.getString(3);
        String mgr = rs.getString(4);
        String hiredate = rs.getString(5);
        String sal = rs.getString(6);
        String comm = rs.getString(7);
        String depno = rs.getString(8);

        // °á°ú¸¦ Ãâ·ÂÇÑ´Ù.
        System.out.println ( 
        empno + " : " + ename + " : " + job + " : " + mgr
        + " : " + hiredate + " : " + sal + " : " + comm + " : "
        + depno); 
      }
      // ResultSet¸¦ ´Ý´Â´Ù.
      rs.close();

      // Statement¸¦ ´Ý´Â´Ù.
      stmt.close(); 

      // Connection¸¦ ´Ý´Â´Ù.
      conn.close();
    } catch ( Exception e ) {
      e.printStackTrace();
    }
  }// main()ÀÇ ³¡ 
}// Ŭ·¡½ºÀÇ ³¡ 

ÄÄÆÄÀÏÇÏ°í ½ÇÇà½ÃŲ °á°ú ´ÙÀ½ÀÇ °á°ú°¡ ³ª¿À¸é JDBC ÇÁ·Î±×·¡¹Ö Áغñ ¿Ï·á°¡ µÈ °Ì´Ï´Ù.

C:\jdbc>javac GetEmp.java

C:\jdbc>java GetEmp
7369 : SMITH : CLERK : 7902 : 1980-12-17 00:00:00.0 : 800 : null : 20
7499 : ALLEN : SALESMAN : 7698 : 1981-02-20 00:00:00.0 : 1600 : 300 : 30
7521 : WARD : SALESMAN : 7698 : 1981-02-22 00:00:00.0 : 1250 : 500 : 30
7566 : JONES : MANAGER : 7839 : 1981-04-02 00:00:00.0 : 2975 : null : 20
7654 : MARTIN : SALESMAN : 7698 : 1981-09-28 00:00:00.0 : 1250 : 1400 : 30
7698 : BLAKE : MANAGER : 7839 : 1981-05-01 00:00:00.0 : 2850 : null : 30
7782 : CLARK : MANAGER : 7839 : 1981-06-09 00:00:00.0 : 2450 : null : 10
7788 : SCOTT : ANALYST : 7566 : 1987-04-19 00:00:00.0 : 3000 : null : 20
7839 : KING : PRESIDENT : null : 1981-11-17 00:00:00.0 : 5000 : null : 10
7844 : TURNER : SALESMAN : 7698 : 1981-09-08 00:00:00.0 : 1500 : 0 : 30
7876 : ADAMS : CLERK : 7788 : 1987-05-23 00:00:00.0 : 1100 : null : 20
7900 : JAMES : CLERK : 7698 : 1981-12-03 00:00:00.0 : 950 : null : 30
7902 : FORD : ANALYST : 7566 : 1981-12-03 00:00:00.0 : 3000 : null : 20
7934 : MILLER : CLERK : 7782 : 1982-01-23 00:00:00.0 : 1300 : null : 10

String DB_URL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl"

jdbc:oracle:thin Àº »ç¿ëÇÏ´Â µå¶óÀ̹ö°¡ ¿À¶óŬ thin ŸÀÔÀÇ µå¶óÀ̹ö¶ó´Â ÀǹÌÀÔ´Ï´Ù.
1521 Àº ¼­ºñ½º¸¦ Çϰí ÀÖ´Â ¿À¶óŬ ¸®½¼³Ê(listener)ÀÇ Æ÷Æ®¹øÈ£ÀÔ´Ï´Ù.
(listener ´Â ¿À¶óŬ¿¡¼­ ¿À¶óŬ°ú ¿ÜºÎ ¾ÖÇø®ÄÉÀ̼ǰúÀÇ Åë½Å ¿ªÈ°À» ÇÕ´Ï´Ù.)
127.0.0.1 Àº µ¥ÀÌÅͺ£À̽º°¡ ¼³Ä¡µÇ¾î ÀÖ´Â ¼­¹öÀÇ IP ÀÔ´Ï´Ù.
orcl Àº SID ÀÔ´Ï´Ù. ¿À¶óŬ ¼³Ä¡ ¶§¿¡ Àü¿ª µ¥ÀÌÅͺ£À̽º À̸§ À¸·Î ÀÔ·ÂÇÑ °ªÀÔ´Ï´Ù.
(Àü¿ª µ¥ÀÌÅͺ£À̽º À̸§ÀÌ SID°¡ ¾Æ´Õ´Ï´Ù. ¿À¶óŬ ¼³Ä¡½Ã¿¡ Àü¿ª µ¥ÀÌÅͺ£À̽º À̸§À¸·Î orcl À» ÀÔ·ÂÇß´Ù¸é, Àü¿ª µ¥ÀÌÅͺ£À̽º À̸§ Àº orcl ÀÌ µÇ´Â °ÍÀº ¹°·ÐÀ̰í SID °¡ orcl ÀÎ µ¥ÀÌÅͺ£À̽º°¡ µðÆúÆ®·Î »ý¼ºµË´Ï´Ù.)

´ÙÀ½Àº JDBC Å×½ºÆ® ÆÄÀÏ GetEmp.java ¸¦ ½ÇÇàÇÒ ¶§ ¹ß»ýÇÒ ¼ö ÀÖ´Â ¿¡·¯¿Í ±× ÇØ°á¹æ¾ÈÀÔ´Ï´Ù.

  1. Exception in thread "main" java.lang.NoClassDefFoundError: GetEmp
    • CLASSPATH ¿¡ ÇöÀç µð·ºÅ丮¸¦ ÀǹÌÇÏ´Â . ¸¦ Ãß°¡ÇÏÁö ¾ÊÀº °æ¿ìÀÔ´Ï´Ù.
  2. java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
    • ¿À¶óŬ JDBC µå¶óÀ̹ö¸¦ CLASSPATH ¿¡ À߸ø Ãß°¡ÇÑ °æ¿ìÀÔ´Ï´Ù.
  3. java.sql.SQLException: IO ¿¹¿Ü »óȲ: The Network Adapter could not establish the connection
    • ¿À¶óŬÀÇ ¸®½¼³Ê(listener)°¡ ¼­ºñ½º¸¦ Çϰí ÀÖÁö ¾ÊÀ» °¡´É¼ºÀÌ ¸¹½À´Ï´Ù.
    • ¸í·É ÇÁ·ÒÇÁÆ®¿¡¼­ lsnrctl status ·Î ¸®½¼³ÊÀÇ ¼­ºñ½º »óŸ¦ È®ÀÎÇϼ¼¿ä.
    • ¸®½¼³Ê°¡ µ¿ÀÛÇϰí ÀÖ´Ù¸é ¼­¹öÀÇ IP ¸¦ 127.0.0.1 ¿¡¼­ loopback adapter ¸¦ ¼³Ä¡ÇÒ ¶§ ¼³Á¤ÇÑ 10.10.10.10 À¸·Î ¹Ù²Ù°í ½ÃµµÇØ º¾´Ï´Ù
  4. java.sql.SQLException: ORA-01017: invalid username/password; logon denied
    • scott °èÁ¤ÀÇ ºñ¹Ð¹øÈ£°¡ Ʋ¸° °æ¿ìÀÔ´Ï´Ù.