¼Ò¼³°°Àº ÀÚ¹Ù 4ºÎ  Á¦19Àå µ¥ÀÌÅͺ£À̽º  19.5 JDBC ±¸Çö  

 

19.5 JDBC ±¸Çö

 

 JDBC¸¦ ±¸ÇöÇÏ´Â ¿¹Á¦¸¦ º¸±â Àü¿¡ ¸î °¡Áö »çÀü¿¡ Áغñ µÇ¾î¾ß ÇÒ »çÇ×µéÀ» ¸ÕÀú Á¡°ËÇØ º¸ÀÚ¸é,

 

n        µå¶óÀ̹ö°¡ ·ÎµùµÇ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù.

n        µ¥ÀÌÅͺ£À̽ºÀÇ ID¿Í Password¸¦ ¾Ë¾Æ µÎ¼Å¾ß ÇÕ´Ï´Ù.

n        ODBC»ç¿ëÀÚ¶ó¸é ODBC DSNÀ» ±â¾ïÇϰí ÀÖ¾î¾ß ÇÕ´Ï´Ù.

 

¿©±â¼­ ¼¼ ¹øÂ° ODBC¶õ °ÍÀÌ Ã³À½ º¸´Â ºÐÀº Á» »ý¼ÒÇÒ °ÍÀÔ´Ï´Ù. ODBC´Â Open Database ConnectivityÀÇ ¾àÀÚ·Î, Oracle, MS-SQLµî°ú °°ÀÌ ¼­·Î ´Ù¸¥ µ¥ÀÌÅͺ£À̽º¸¦ ÅëÇÏ¿© ±¸ÃàµÈ µ¥ÀÌÅ͸¦ Microsoft Windowsȯ°æ¿¡¼­ ¼­·Î °øÀ¯ÇÒ ¼ö ÀÖµµ·Ï Microsoft»ç¿¡ ÀÇÇØ Á¦¾ÈµÈ µ¥ÀÌÅͺ£À̽º µ¥ÀÌÅÍÀÇ °øÀ¯¸¦ À§ÇÑ ±Ô°ÝÀÔ´Ï´Ù. ¿ì¸®´Â ÀÌ ODBC¸¦ ÀÌ¿ëÇØ µ¥ÀÌÅͺ£À̽º¿¡ Á¢±ÙÇÒ °ÍÀÔ´Ï´Ù.

 

¾ÕÀ¸·Î ¿¹Á¦ÀÇ Å×½ºÆ®¸¦ À§ÇØ ¿©·¯ºÐÀº µ¥ÀÌÅͺ£À̽º ¼³Á¤À» ÇØ¾ß ÇÕ´Ï´Ù. ¿©±â¼­´Â Àü¿¡ ¸»¾¸ µå¸° ´ë·Î MS-SQLÀ» Windows2000¿¡¼­ »ç¿ëÇÕ´Ï´Ù. ¸ÕÀú ¿¹Á¦·Î »ç¿ëÇÒ database¸¦ »õ·Î ¸¸µé°í À̸§À» ¡°testDB¡±·Î ÁÝ´Ï´Ù. ±×·± ÈÄ testDB µ¥ÀÌÅͺ£À̽ºÀÇ Login ID¸¦ ¡°id¡±·Î »õ·Î Ãß°¡Çϰí, Password¸¦ ¡°password¡±·Î ¼³Á¤ÇØ ÁÖ¼Å¾ß ÇÕ´Ï´Ù.

 

±×¸®°í ODBC¸¦ ÀÌ¿ëÇϱâ À§Çؼ­´Â DSN(Data Source Name)À» ¼³Á¤ÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù. ±×·³ ODBC(µ¥ÀÌÅÍ ¿øº»)¸¦ ÀÌ¿ëÇØ¼­ DSNÀ» ¼³Á¤ÇÏ´Â °ÍÀ» ¾Ë¾Æº¸°Ú½À´Ï´Ù. óÀ½ ÇϽô ºÐÀº ±×³É Â÷·Ê´ë·Î µû¶ó Çϼ¼¿ä.

 

n        À©µµ¿ìÀÇ ¡°½ÃÀÛ¡±À» Ŭ¸¯Çϰí, ¡°ÇÁ·Î±×·¥¡±ÀÇ ¡°°ü¸®µµ±¸¡±¿¡ ¡°µ¥ÀÌÅÍ ¿øº»(ODBC)¡±À» Ŭ¸¯ÇÑ ÈÄ ODBCÀÇ ¡°System DSN¡±À» Ŭ¸¯ÇÏ¸é ¾Æ·¡ÀÇ È­¸éÀÌ ¶å´Ï´Ù.

 

±×¸² 19‑1 System DSN¿¡¼­ Ãß°¡Çϱâ

n        À§ÀÇ È­¸é¿¡¼­ ¡°Add¡± ¹öưÀ» Ŭ¸¯ÇÑ ÈÄ, ¾Æ·¡È­¸é¿¡¼­ ¡°SQL Server¡± µå¶óÀ̹ö¸¦ ¼±ÅÃÇÏ°í ¡°¸¶Ä§¡± ¹öưÀ» Ŭ¸¯Çؼ­ µå¶óÀ̹ö ¼±ÅÃÀ» ¸¶Ä¨´Ï´Ù..

 

±×¸² 19‑2 SQL Server µå¶óÀ̹ö ¼±ÅÃ

n        NameÀº DriverManager.getConnection("jdbc:odbc:dbdsn","id","password")ÀÇ ÆÄ¶ó¹ÌÅÍ·Î µé¾î°¡´Â DSN À̸§Àε¥ ¿¹Á¦¿¡¼­´Â ¡°dbdsn¡±À¸·Î Ç߱⠶§¹®¿¡ ¿©±â¼­ ¼³Á¤µµ ¡°dbdsn¡±·Î ÇϰڽÀ´Ï´Ù. Server´Â ¡°(local)¡±·Î ¿¬°áÇÕ´Ï´Ù.

±×¸² 19‑3 DSN À̸§ ¼³Á¤

n        ´ÙÀ½Àº ÀÎÁõ ºÎºÐÀε¥ SQL Server ÀÎÁõÀ» ¼±ÅÃÇϸé, ¹ØÀÇ ºÎºÐÀÇ ID¿Í PasswordºÎºÐÀÌ È°¼ºÈ­°¡ µË´Ï´Ù. ¹ØÀÇ ¿¹Á¦¿Í °°ÀÌ ¡°id¡±¿Í ¡°password¡±·Î µ¿ÀÏÇÏ°Ô ÀÔ·ÂÇÕ´Ï´Ù.

±×¸² 19‑4 SQL Server ÀÎÁõ µî·Ï

n        default µ¥ÀÌÅͺ£À̽º¸¦ testDB·Î ¹Ù²ß´Ï´Ù.

±×¸² 19‑5 default µ¥ÀÌÅͺ£À̽º ¼±ÅÃ

n        ¸¶Ä§À» Ŭ¸¯ÇØ ODBCÀÇ DSN ¼³Á¤À» ³¡³½ ÈÄ ¡°Test Data Source¡¦¡±¸¦ Ŭ¸¯Çؼ­ ¿¬°á È®ÀÎÀ» Çϰí, OK¹öưÀ» Ŭ¸¯Çؼ­ ÃÖÁ¾ ¸¶¹«¸®¸¦ ÇÕ´Ï´Ù.

±×¸² 19‑6 ¼³Á¤ ¸¶Ä§

 

±×¸² 19‑7 DSN ¼³Á¤ °á°ú Ãâ·Â È­¸é

 

 

¢Ñ ODBC

Open DataBase Connectivity

¸¶ÀÌÅ©·Î¼ÒÇÁÆ® À©µµ¿ì ȯ°æ¿¡¼­ »óÈ£°£¿¡ µ¥ÀÌÅ͸¦ °øÀ¯ÇÒ ¼ö ÀÖµµ·Ï ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿¡ ÀÇÇÏ¿© Á¦¾ÈµÈ µ¥ÀÌÅͺ£À̽º µ¥ÀÌÅÍÀÇ °øÀ¯¸¦ À§ÇÑ ±Ô°Ý

 

ÀÌÁ¦ º»°ÝÀûÀ¸·Î ¿¹Á¦¸¦ ÅëÇØ JDBC¸¦ ±¸ÇöÇØ º¸°Ú½À´Ï´Ù. JDBC¸¦ ±¸ÇöÇϱâ À§Çؼ­´Â ¿ì¼± JDBC API¸¦ ¼³Ä¡ÇØ¾ß Çϴµ¥ À̰ÍÀº º°µµÀÇ ÀÛ¾÷Àº ÇÊ¿ä ¾ø°í JDK(Java Development Kit)¸¦ ¼³Ä¡Çϸé ÀÚµ¿À¸·Î ÀνºÅç µË´Ï´Ù.

 

´ÙÀ½ÀÇ ¿¹Á¦¸¦ ÅëÇØ java.sqlÆÐŰÁöÀÇ ÀÎÅÍÆäÀ̽ºµéÀ» ¾Ë¾Æº¸°í, ±× Ŭ·¡½º¿¡ ÇØ´çÇÏ´Â ¸Þ¼­µåµé¿¡ °üÇØ Çѹø ¾Ë¾Æº¸±â·Î ÇϰڽÀ´Ï´Ù. ÀÌÈÄ¿¡ °¢°¢ÀÇ ÀÎÅÍÆäÀ̽º ¹× ÇØ´ç ¸Þ¼­µåµé¿¡ ´ëÇØ ÀÚ¼¼È÷ º¼ °ÍÀ̹ǷΠ¿©±â¼­´Â ¾î¶»°Ô JDBC°¡ ±¸ÇöµÇ°í »ç¿ëµÇ´ÂÁö ±× È帧À» ´« ¿©°Ü º¸½Ã±â ¹Ù¶ø´Ï´Ù. ÀÌ ¿¹Á¦¸¦ ¿©±â¼­ ´Ù ÀÌÇØÇÏ·Á°í ¾Ö¾²Áö ¸¶¼¼¿ä. ±×·¯¸é µÚ¿¡°¡¼­ ÇÒ °ÍÀÌ ¾ø¾îÁö´Ï±î¿ä~.

 

JdbcTest.java (°£´Ü µ¥ÀÌÅͺ£À̽º ¿¹Á¦)

import java.sql.*;

public class JdbcTest {

   public static void main(String[] args) throws ClassNotFoundException, SQLException {

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

     Connection conn = DriverManager.getConnection("jdbc:odbc:dbdsn", "id","password");

     Statement stmt = conn.createStatement();

       String sql = "Create table MyTest(name varchar(20), age int) ";

     stmt.executeUpdate(sql); 

       System.out.println(" MyTest Å×ÀÌºí »ý¼º OK!" );

      

     PreparedStatement pstmt = conn.prepareStatement("Insert into MyTest values (?,?)");

     pstmt.setString(1, "Jabook");

     pstmt.setInt(2, 2);

     pstmt.execute();

       System.out.println(" MyTest Å×ÀÌºí¿¡ µ¥ÀÌÅÍ »ðÀÔ OK!");

 

       stmt = conn.createStatement();

       sql = "Select * from MyTest ";

     ResultSet rs = stmt.executeQuery(sql); 

       System.out.println(" MyTest Å×ÀÌºí¿¡¼­ ResultSet °¡Á®¿À±â OK!");

       while(rs.next()){

       System.out.println("name : " + "\t" + rs.getString(1));

       System.out.println("age : " + "\t" + rs.getInt(2));

       }

     rs.close();

     pstmt.close();

     stmt.close();

     conn.close();

   }

}

C:\JavaExample\19>javac JdbcTest.java

C:\JavaExample\19>java JdbcTest

 MyTest Å×ÀÌºí »ý¼º OK!

 MyTest Å×ÀÌºí¿¡ µ¥ÀÌÅÍ »ðÀÔ OK!

 MyTest Å×ÀÌºí¿¡¼­ ResultSet °¡Á®¿À±â OK!

name :  Jabook

age :   2

 

¿¹Á¦ÀÇ °á°ú¸¦ º¸½Ã¸é ÀÌ ÇÁ·Î±×·¥ÀÌ µ¥ÀÌÅͺ£À̽º¿¡ Å×À̺íÀ» »ý¼ºÇϰí, µ¥ÀÌÅ͸¦ »ðÀÔÇÑ ´ÙÀ½ ´Ù½Ã ±× µ¥ÀÌÅ͸¦ Àоî¿À´Â °ÍÀ̶ó´Â °ÍÀ» ÁüÀÛÇÏ½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ±×·³ ¿¹Á¦¸¦ ºÐ¼®ÇØ º¸°Ú½À´Ï´Ù.

 

¸ÕÀú JDBC¸¦ ÀÌ¿ëÇϱâ À§Çؼ­ java.sqlÆÐŰÁö¸¦ importÇϰí ÀÖ½À´Ï´Ù.

 

n        import java.sql.*;

 

JdbcOdbcDriver¸¦ ·Îµù½Ãŵ´Ï´Ù. Class.forName¿¡ °ü·ÃµÈ »çÇ×µéÀº 11Àå Reflection¿¡¼­ »ó¼¼È÷ ´Ù·ç¾úÀ¸´Ï ±Ã±ÝÇϽøé Âü°íÇϽñ⠹ٶø´Ï´Ù.

 

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

 

µ¥ÀÌÅͺ£À̽º¿¡ ODBC¸¦ ÅëÇØ Á¢¼ÓÇØ µå¶óÀ̹ö¸¦ °ü¸®ÇÏ´Â DriverManager·ÎºÎÅÍ Connection°´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù.

 

n        Connection conn = DriverManager.getConnection("jdbc:odbc:dbdsn", "id", "password");

 

Connection°´Ã¼ connÀ¸·ÎºÎÅÍ Statement°´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù.

 

n        Statement stmt = conn.createStatement();

 

»ý¼ºµÈ Statement°´Ã¼ stmt¸¦ ÅëÇØ, Query¹®À» Update½Ãŵ´Ï´Ù. Áï µ¥ÀÌÅͺ£À̽º·Î Àü¼ÛÇÏ´Â °ÍÀÔ´Ï´Ù.

 

n        stmt.executeUpdate(sql);

 

PreparedStatementÀÇ °´Ã¼ pstmt¸¦ »ý¼ºÇÕ´Ï´Ù. ´«Ä¡ ºü¸¥ ºÐµéÀº Statement¿Í´Â ´Ù¸¥ ¹«¾ùÀ̱¸³ª ÇÏ°í ´À³¢½Ç °ÍÀÔ´Ï´Ù. ¿©±â¼­´Â ¡°Statement¿Í ºñ½ÁÇÑ ³ðÀÌÁö¸¸, query¹®À» Àμö·Î ³Ñ°Ü¼­, Statementº¸´Ù ¼öÇà¼Óµµ°¡ Á¶±Ý ºü¸£´Ù¡± Á¤µµ¸¸ ¾Ë¾ÆµÎ½Ã°í µÚ¿¡ °¡¼­ ÀÚ¼¼È÷ º¸°Ú½À´Ï´Ù.

 

n        PreparedStatement pstmt = conn.prepareStatement("Insert into MyTest values (?,?)");

 

PreparedStatementŬ·¡½ºÀÇ ¸Þ¼­µåÀÎ setString()°ú setInt()¸¦ ½á¼­, ¹°À½Ç¥¿¡ ÇØ´çÇÏ´Â µ¥ÀÌÅ͸¦ Àμö·Î ³Ñ±é´Ï´Ù. À̶§ ÁÖÀÇÇÒ Á¡Àº µ¥ÀÌÅͺ£À̽ºÀÇ µ¥ÀÌÅÍ Å¸ÀÔÀ» °í·ÁÇØ¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù.

 

n        pstmt.setString(1, "Jabook");

n        pstmt.setInt(2, 2);

n        pstmt.execute();

 

 ´ÙÀ½Àº ResultSetÀÇ °´Ã¼¸¦ »ý¼ºÇÏ´Â ºÎºÐÀÔ´Ï´Ù.

 

n        ResultSet rs = stmt.executeQuery(sql); 

 

 ¸¶Áö¸·À¸·Î ConnectionÀÎÅÍÆäÀ̽ºÀÇ close()¸Þ¼­µå¸¦ »ç¿ëÇØ¼­ µ¥ÀÌÅͺ£À̽º·ÎºÎÅÍ °¡Á®¿Â ResultSet, PreparedStatement, Statement¿Í ConnectionÀÇ °´Ã¼µéÀ» ¼ø¼­´ë·Î ´Ý¾Æ ÁÖ¾î¾ß ÇÕ´Ï´Ù.

 

n        rs.close();

n        pstmt.close();

n        stmt.close();

n        conn.close();

 

¿¹Á¦¸¦ ÅëÇØ JDBC¸¦ ¾î¶»°Ô ±¸ÇöÇϴ°¡¿¡ ´ëÇØ »ìÆì º¸¾Ò½À´Ï´Ù. ÀÌÁ¦ ´ÙÀ½ ÀýºÎÅÍ´Â ¿¹Á¦¿¡¼­µµ »ìÆì º¸¾Ò´ø java.sql ÆÐŰÁöÀÇ Áß¿ä ÀÎÅÍÆäÀ̽ºµéÀ» Çϳª Çϳª¾¿ »ìÆìº¼ °ÍÀÔ´Ï´Ù.



jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù4ºÎ
ÀúÀÚ:ÃÖ¿µ°ü