¼Ò¼³°°ÀºJSP2ºÎ  8Àå JDBC¿Í JSP  04 JDBC ±âº»±¸Çö  

 

8.4 JDBC ±âº» ±¸Çö

 

JDBC¸¦ ±¸ÇöÇÏ´Â ÀýÂ÷¸¦ »ìÆìº¸°í, °£´ÜÇÑ ¿¹Á¦¸¦ ÅëÇØ¼­ »ç¿ë¹ýÀ» ¾Ë¾Æº¸°Ú½À´Ï´Ù. ±âº»±¸ÇöÀ̶ó°í´Â ÇÏÁö¸¸, JDBC µå¶óÀ̹öÀÇ ·Îµù, ¿¬°á¼³Á¤, ÁúÀǼöÇà, °á°úó¸® µî JDBCÀÇ Àü¹ÝÀûÀÎ »ç¿ë¹ý¿¡ ´ëÇØ ¸ðµÎ »ìÆìº¼ °ÍÀÔ´Ï´Ù. ±×·³ ¸ÕÀú ±¸ÇöÀÇ ÀýÂ÷ºÎÅÍ »ìÆìº¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

     JDBC ±¸ÇöÀÇ ÀýÂ÷

n        JDBC ÀÎÅÍÆäÀ̽º ¹× Ŭ·¡½º¸¦ À§ÇÑ java.sql ÆÐŰÁö import

n        JDBC Driver ·Îµù

n        ¿¬°á URL Á¤ÀÇ ¹× DB·ÎÀÇ Connection¾ò±â

n        ConnectionÀ¸·ÎºÎÅÍ Statement °´Ã¼ »ý¼º

n        SQL¹® ½ÇÇà

n        SQL¹® ¹Ýȯ°á°ú ó¸®

n        ¿¬°á ´ÝÀ½

 

ÀÌ·± ÀýÂ÷µéÀ» ¿¹Á¦¿Í ÇÔ²² Â÷·Ê·Î ¾Ë¾Æº¸µµ·Ï ÇϰڽÀ´Ï´Ù. ¿¹Á¦¸¦ ¼³¸í µå¸®±â Àü¿¡ ¸ÕÀú ¿©·¯ºÐÀº Å×½ºÆ®¸¦ À§ÇØ µ¥ÀÌÅͺ£À̽º ¼³Á¤À» ÇØ¾ß ÇÕ´Ï´Ù. ¿©±â¼­´Â Àü¿¡ ¸»¾¸ µå¸° ´ë·Î MS-SQL2000À» Windows2000 ¼­¹ö ȯ°æ¿¡¼­ »ç¿ëÇÕ´Ï´Ù. ¸ÕÀú ¿¹Á¦·Î »ç¿ëÇÒ µ¥ÀÌÅͺ£À̽º¸¦ »õ·Î ¸¸µé°í À̸§À» ¡°noveljsp¡±·Î ÁÝ´Ï´Ù. ±×·± ÈÄ noveljsp µ¥ÀÌÅͺ£À̽ºÀÇ Login ID¸¦ ¡°novel¡±·Î »õ·Î Ãß°¡Çϰí, Password¸¦ ¡°jsp¡±·Î ¼³Á¤ÇØ ÁÖ¼Å¾ß ÇÕ´Ï´Ù.

 

´ÙÀ½Àº JDBC¸¦ ÅëÇØ¼­ µ¥ÀÌÅͺ£À̽º¿¡ Å×À̺íÀ» ¸¸µé°í, µ¥ÀÌÅ͸¦ »ðÀÔÇÏ°í °¡Á®¿À´Â ¿¹Á¦ÀÔ´Ï´Ù. ÀÌ ¿¹Á¦¸¦ ÅëÇØ JDBC ±¸ÇöÀÇ ÀýÂ÷¸¦ »ìÆìº¸°í °ü·ÃµÈ Ŭ·¡½º¿Í ±×¿¡ ÇØ´çÇÏ´Â ¸Þ¼­µåµé¿¡ ´ëÇØ ¾Ë¾Æº¸±â·Î ÇϰڽÀ´Ï´Ù. ÀÌÈÄ¿¡ °¢°¢ÀÇ Å¬·¡½º, ÀÎÅÍÆäÀ̽º ¹× ÇØ´ç ¸Þ¼­µåµé¿¡ ´ëÇØ ÀÚ¼¼È÷ ¾Ë¾Æ º¼ °ÍÀ̹ǷΠ¿©±â¼­´Â ¾î¶»°Ô JDBC°¡ ±¸ÇöµÇ°í »ç¿ëµÇ´ÂÁö ±× È帧À» ´« ¿©°Ü º¸½Ã±â ¹Ù¶ø´Ï´Ù.

 

JdbcTest.java

°£´ÜÇÑ JDBC ¿¹Á¦

import java.sql.*;  
public class 
JdbcTest {  
  
public static void main(String[] args) throws 
ClassNotFoundException, SQLException {  
    Class.forName(
"com.microsoft.jdbc.sqlserver.SQLServerDriver"
);  
    String url = 
"jdbc:microsoft:sqlserver://localhost:1433"

    String id = 
"novel"

    String pass = 
"jsp"

    Connection conn = DriverManager.getConnection(url,id,pass);  
    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(
23
);  
    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:\jakarta\webapps\MySample\WEB-INF\classes\org\jabook\sql>javac JdbcTest.java

C:\jakarta\webapps\MySample\WEB-INF\classes\org\jabook\sql>java JdbcTest

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

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

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

name :  Jabook

age :   3

 

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

 

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

 

n        import java.sql.*;

 

±×¸®°í SQLServerDriver JDBC µå¶óÀ̹ö¸¦ Class.forName ¸Þ¼­µå¸¦ ÅëÇØ¼­ ·Îµù½Ãŵ´Ï´Ù. ´Ù½Ã Çѹø ¸»ÇÏÁö¸¸, ¿©±â¼­ ·ÎµùÇÒ JDBC µå¶óÀ̹öÀÇ Å¬·¡½º´Â classpath¿¡ ÀâÇô ÀÖ¾î¾ß ÇÕ´Ï´Ù.

 

n        Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

 

JDBC µå¶óÀ̹ö¸¦ °ü¸®ÇÏ´Â DriverManager·ÎºÎÅÍ Connection °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù. ¿©±â¼­ getConnection ¸Þ¼­µåÀÇ ¸Å°³º¯¼ö·Î´Â µ¥ÀÌÅͺ£À̽ºÀÇ URL°ú ÇØ´ç id ±×¸®°í password°¡ StringÇüÀ¸·Î µé¾î°©´Ï´Ù.

 

n        Connection conn = DriverManager.getConnection(url,id,pass);

 

Connection °´Ã¼ connÀ¸·ÎºÎÅÍ Statement °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù. Statement °´Ã¼´Â µ¥ÀÌÅͺ£À̽º¿¡ ÁúÀǸ¦ Çϰųª ÀÛ¾÷ ¸í·ÉÀ» Àü´ÞÇϴµ¥ »ç¿ëµË´Ï´Ù.

 

n        Statement stmt = conn.createStatement();

 

»ý¼ºµÈ Statement °´Ã¼ stmt¸¦ ÅëÇØ, Äõ¸®¹®À» Update½Ãŵ´Ï´Ù. Áï µ¥ÀÌÅͺ£À̽º·Î Àü¼ÛÇÏ´Â °ÍÀÔ´Ï´Ù. ¿©±â¼­´Â µ¥ÀÌÅ׺£À̽º¿¡ ¡°MyTest¡±¶ó´Â »õ·Î¿î Å×À̺íÀ» ¸¸µé°í ÀÖ½À´Ï´Ù.

 

n        stmt.executeUpdate(sql);

 

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

 

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

 

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

 

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

n        pstmt.setInt(2, 3);

n        pstmt.execute();

 

´ÙÀ½Àº ResultSetÀÇ °´Ã¼¸¦ »ý¼ºÇÏ´Â ºÎºÐÀÔ´Ï´Ù. Statement°¡ ó¸®ÇÑ °á°ú°ªÀ» µ¹·Á ¹Þ´Â °´Ã¼·Î À̰ÍÀ» ÅëÇØ¼­ °á°ú¸¦ ó¸®ÇÏ°Ô µË´Ï´Ù.

 

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¸¦ ¾î¶»°Ô ±¸ÇöÇϴ°¡¿¡ ´ëÇØ »ìÆì º¸¾Ò½À´Ï´Ù. ´ÙÀ½ Àý¿¡¼­´Â À̰ÍÀ» ¹ÙÅÁÀ¸·Î JSP¿Í JDBC¸¦ ¿¬°áÇÏ´Â °Í¿¡ ´ëÇØ »ìÆìº¸°Ú½À´Ï´Ù.



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