JDBC¸¦ ÀÌ¿ëÇÏ¿© DB¸¦ ¿¢¼¼½ºÇؼ ÇÁ·Î±×·¡¹ÖÀ» ÇÏ´Â ¹æ¹ýÀÇ ±âÃÊ¿¡ ´ëÇØ¼ °ÀÇÇÕ´Ï´Ù. µû¶ó¼ À̹ø °Á´ JDBC¸¦ óÀ½ »ç¿ëÇϰí ÇÏ´Â ºÐµé¿¡°Ô ÀûÇÕÇÑ °ÁÂÀÔ´Ï´Ù.
* JDBC ÇÁ·Î±×·¡¹ÖÀÇ 5 ´Ü°è
* 1. DriverManager¿¡ ÇØ´ç DBMS Driver¸¦ µî·Ï
Driver¸¦ DriverManager¿¡ µî·ÏÇÏ´Â ¹æ¹ýÀº 3°¡Áö°¡ ÀÖ½À´Ï´Ù. Class.forName() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ý, Driver°´Ã¼¸¦ »ý¼ºÇÏ´Â ¹æ¹ý, registerDriver() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ý ÀÌ·¸°Ô 3°¡ÁöÀÇ ¹æ¹ýÀÌ ÀÖÁö¸¸ °¡Àå ÀϹÝÀûÀ¸·Î »ç¿ëÇÏ°í ½¬¿î ¹æ¹ýÀÎ Class.forName() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼¸¸ ¼³¸íÇϵµ·Ï ÇϰڽÀ´Ï´Ù.
ÇØ´ç JDBC µå¶óÀ̹ö¸¦ µî·ÏÇÏ·Á¸é ´ç¿¬È÷ JDBC µå¶óÀ̹ö°¡ ÇÊ¿äÇÕ´Ï´Ù. ÇØ´ç µ¥ÀÌÅͺ£À̽ºÀÇ µå¶óÀ̹ö ÆÄÀÏÀ» ¸ÕÀú Ŭ·¡½º ÆÐ½º¿¡ ÀâÀ¸½Ã±â ¹Ù¶ø´Ï´Ù. ¿À¶óŬÀÇ °æ¿ì´Â www.oracle.com ¿¡¼ ´Ù¿î·Îµå ¹ÞÀ»¼öµµ ÀÖ°í ¿À¶óŬ ¼³Ä¡½Ã °°ÀÌ ¼³Ä¡ µÇ¹Ç·Î ¿À¶óŬ µð·ºÅ丮¸¦ Àß »ìÆì º¸±â ¹Ù¶ø´Ï´Ù.
´ÙÀ½À¸·Î mySQLÀÇ °æ¿ì´Â http://sourceforge.net/project/showfiles.php?group_id=15923À¸·Î °¡¼Å¼ ´Ù¿î¹ÞÀ¸½Ã±â ¹Ù¶ø´Ï´Ù.
ÀÌÁ¦ JDBC µå¶óÀ̹ö¸¦ DriverManager¿¡ µî·ÏÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼ ¾Ë¾Æ º¸°Ú½À´Ï´Ù.
Class.forName("org.gjt.mm.mysql.Driver"); -> mySQL ÀÇ °æ¿ì Class.forName("oracle.jdbc.driver.OracleDriver"); -> Oracle thin µå¶óÀ̹öÀÇ °æ¿ì
Class ´Â java.lang ÆÐŰÁö¿¡ Àִ Ŭ·¡½º ÀÔ´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀÌ ±Ã±ÝÇϽŠºÐÀº api¹®¼¸¦ Âü°í ÇϽñ¸¿ä... forName ¸Þ¼Òµå¿¡ parameter·Î ¾²ÀÎ StringÀº ´ç¿¬È÷ DBMSÀÇ Á¾·ù¿¡ µû¶ó Ʋ·ÁÁö°ÚÁö¿ä? ¾î°µç À§ÀÇ ¸Þ¼Ò¸¦ ½ÇÇà½ÃŰ°í³ª¸é ÀÚµ¿À¸·Î µå¶óÀ̹ö °´Ã¼°¡ »ý¼ºÀ̵ǰí, ÀÚ½ÅÀ» DriverManager¿¡ µî·ÏÇϴ ó¸®°¡ ÀÌ·ç¾îÁö°Ô µË´Ï´Ù.
* 2. ÇØ´ç Driver·Î ºÎÅÍ Connection °´Ã¼ ȹµæ
ConnectionÀ̶ó´Â °ÍÀº DBMS¿¡ ¿¬°áµÈ sessionÀ» ÀÇ¹Ì ÇÕ´Ï´Ù. Connection °´Ã¼¸¦ ȹµæÇÏ´Â ¹æ¹ýÀº DriverManagerÀÇ getConnection() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇÏ¸é µÇ´Âµ¥ ±× Çü½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù.
Connection con=DriverManager.getConnection(String jdbcURL,String id,String password);
´ÙÀ½°ú °°Àº Çü½ÄÀ¸·Î »ç¿ëÇÕ´Ï´Ù.
String url="jdbc:mysql://localhost/dbname"; // dbname¿¡´Â »ç¿ëÇÏ´Â database À̸§ Connection con=DriverManager(url,"root","1234"); // root °èÁ¤, ÆÐ½º¿öµå´Â 1234
* 3. Connection °´Ã¼·Î ºÎÅÍ Statement °´Ã¼ ȹµæ
ÇϳªÀÇ ConnectionÀ¸·Î ºÎÅÍ ¿©·¯°³ÀÇ StatementÀÇ »ý¼ºÀÌ °¡´ÉÇÕ´Ï´Ù. ÀÌÈÄ¿¡ Statement·Î ºÎÅÍ SQLÀ» ½ÇÇàÇÏ°Ô µË´Ï´Ù. ¾Æ·¡ÀÇ ±×¸²À» º¸½Ã¸é ÀÌÇØ°¡ µÇ¸®¶ó »ý°¢µË´Ï´Ù.
Connection con=DriverManager.getConnection("jdbc:mysql://localhost/dbname","root","password"); Statement st1=con.createStatement(); ResultSet rs1=st1.executeQuery("select * form names"); Statement st2=con.createStatement(); ResultSet rs2=st2.executeQuery("select * form users"); Statement st3=con.createStatement(); ResultSet rs3=st3.executeQuery("select * form emails");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost/dbname","root","password"); PreparedStatement ps=con.prepareStatement("update juso set si=? where zip=?); // ¹ØÁÙÄ£ ºÎºÐ ÁÖÀÇ ps.setString(1,"Seoul"); // ù¹øÀç ? ÀÌ 1¹øÀÌ µË´Ï´Ù. ps.setString(2,request.getParameter("zip")); // µÎ¹øÂ° " ? " // setString ¸»°íµµ, setDate, setArray, setCharacterStreamµî ¿©·¯°¡Áö°¡ ÀÖ½À´Ï´Ù. ps.executeUpdate();
* 4. StatementÀÇ ¸Þ¼Òµå¸¦ ÀÌ¿ëÇØ¼ SQL¹®ÀÇ ½ÇÇà
Statement Ŭ·¡½º¿¡¼´Â Äõ¸®¹®ÀÇ ½ÇÇàÀ» À§Çؼ ¸î°¡Áö ¸Þ¼Òµå¸¦ Á¦°øÇϴµ¥, executeQuery()¿Í executeUpdate() µÎ°³ÀÇ ¸Þ¼Òµå¸¸ ¾Ë¸é ÃæºÐÈ÷ Ȱ¿ëÀÌ °¡´ÉÇÕ´Ï´Ù.
ResultSet rs=stmt.executeQuery("select * from users");
stmt.executeUpdate("insert into users(id,password) values('ab','bc')");
* 5. ResultSetÀ¸·Î ¹Þ¾Æ ¼ ó¸®Çϱâ
À§¿¡¼ ¼³¸íÇß´Ù ½ÃÇÇ executeQuery()¸¦ ½ÇÇàÇϸé ResultSet ŸÀÔÀÇ °´Ã¼¸¦ ¹ÝȯÇÕ´Ï´Ù. ÀÌ °´Ã¼´Â ½ÇÇàµÈ Äõ¸®¹®ÀÇ °á°ú °°À» °¡Áö°í Àִµ¥ ResultSetÀÇ ¸î°¡Áö ¸Þ¼Òµå¸¦ ÀÌ¿ëÇϸé ResultSet¿¡ ÀúÀåµÈ Á¤º¸¸¦ »ç¿ëÇÒ¼ö ÀÖ½À´Ï´Ù. selectÄõ¸®¸¦ ½ÇÇà ÇßÀ¸¹Ç·Î ÇϳªÀÌ»óÀÇ row¸¦ Áö´Ï°í Àִµ¥.. ÇöÀç row¿¡¼ ´ÙÀ½ row·Î ³Ñ±â·Á¸é rs.next() ¿Í °°ÀÌ »ç¿ëÇÏ¸é µË´Ï´Ù.(ù¹øÂ° rowµµ next()¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.)
°¢ row°¡ ¼±ÅÃÀÌ µÇ¾úÀ¸¸é °¢Ä÷³ÀÇ µ¥ÀÌÅ͸¦ ºÒ·¯ ¿À¸é µÇ´Âµ¥, µÎ°¡ÁöÀÇ ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ù¹øÂ°¹æ¹ýÀº
String name=rs.getString(1); (name¿¡ ÇØ´çÇÏ´Â Ç׸ñÀÇ Ã¹¹øÀç Ä÷³¿¡ ÀÖÀ»°æ¿ì)
À̿Ͱ°ÀÌ µ¥ÀÌÅÍÀÇ Ä÷³ À§Ä¡·Î °Ë»öÇÕ´Ï´Ù. getStringÀÇ String ¿¡´Â Int,Double, µî°ú °°Àº ÀÚ·áÇüÀ» »ç¿ëÇϸé ÇØ´ç ÀÚ·áÇü¿¡ ¸Â´Â µ¥ÀÌÅ͸¦ ¸®ÅÏÇÏ¿© ÁÝ´Ï´Ù. (getString(), getInt(), getDouble() µîµî....) ¶Ç´Ù¸¥ ¹æ¹ýÀº Ä÷³ÀÇ À̸§À» Á÷Á¢ ¼¼úÇÏ´Â ¹æ¹ýÀε¥, ´ÙÀ½°ú °°ÀÌ »ç¿ëµË´Ï´Ù.
String name=rs.getString("name");
ÀÌ·¯°Ô Çϸé rs ResultSet¿¡ ÀúÀåµÇ ¾ú´ø nameÄ÷³ÀÇ µ¥ÀÌÅͰ¡ name¿¡ ÀúÀåµË´Ï´Ù.
* 6. °´Ã¼ close() Çϱâ (ResultSet, Statement, Connection)
rs.close();st.close();con.close();
À§¿Í °°ÀÌ »ç¿ëÇϸç, con (Connection) °ú st (Statement or PreparedStatement)´Â ¹Ýµå½Ã close µÇ¾î¾ß ÇÕ´Ï´Ù. À§¿¡¼ ¼³¸íÇÑ ¹Ù¿Í °°ÀÌ Statement ¿Í ResultSet Àº 1:1 ´ëÀÀ À̱⠶§¹®¿¡ ResultSet Àº Statement °¡ ¼Ò¸êµÇ¸é ÀÚµ¿À¸·Î ¼Ò¸êµË´Ï´Ù. (¾Æ¿¹ 󸮸¦ ÇÏÁö ¸»¶ó´Â ¾ê±â´Â ¾Æ´Õ´Ï´Ù. -¾ÈÀüÀ» À§Çؼ)
* ±×¸®°í....
´ëºÎºÐÀÇ Servlet/JSP À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ¿¡¼´Â Connection À» Pool ·Î¼ °ü¸®¸¦ Çϴµ¥, ÀÌ´Â ¸Å ¿äû½Ã ¸¶´Ù µ¥ÀÌÅͺ£À̽º¿¡ Á¢¼ÓÇϰí ÇØÁ¦ÇÏ´Â ÀÏÀ» ¼öÇàÇϴµ¥ ÀÖ¾î ¹ß»ýÇÏ´Â ºÎÇϸ¦ ÁÙ¿© ÁÖ°í, ÀÏÁ¤ °¹¼ö ÀÌ»óÀÇ Ä¿³Ø¼Ç¼ö¸¦ ³ÑÁö ¾Êµµ·Ï À¯Áö½ÃÄÑ ÁÖ±â À§Çؼ ÀÔ´Ï´Ù. ÀÌ·¯ÇÑ Connection Pool Àº ¸î°¡Áö °ø°³µÈ°Íµµ ÀÖ°í Á÷Á¢ Á¦ÀÛÇÒ¼öµµ ÀÖÀ¸³ª, ¿©±â ¿¡¼´Â »ý·«Çϵµ·Ï ÇϰڽÀ´Ï´Ù.