ÀÀ¿ëÇÁ·Î±×·¥°ú ¾ÖÇø´ µÑ´Ù ´ÙÀ½°ú °°Àº ÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù.
ÇÁ·Î±×·¥ ÄÚµù ÈÄ ´Ù¸¥ Java ÇÁ·Î±×·¥ÀÇ °æ¿ì¿Í ¸¶Âù°¡Áö·Î ÄÄÆÄÀÏÇϽʽÿÀ. Ư¼öÇÑ »çÀü ó¸® ÄÄÆÄÀÏ ¶Ç´Â ¹ÙÀÎµå ´Ü°è¸¦ ¼öÇàÇÒ Çʿ䰡 ¾ø½À´Ï´Ù.
´ÙÀ½ »ùÇà ÇÁ·Î±×·¥ DB2Appl.java ´Â DB2¿ë JDBC ÇÁ·Î±×·¥ ÄÚµù ¹æ¹ýÀÇ µ¥¸ð¸¦ ³ªÅ¸³À´Ï´Ù.
import java.sql.*; (1) class DB2Appl { static { try { Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance(); } catch (Exception e) { System.out.println(e); } } public static void main(String argv[]) { Connection con = null; (2) // URL is jdbc:db2:dbname String url = "jdbc:db2:sample"; (3) try { if (argv.length == 0) { // connect with default id/password con = DriverManager.getConnection(url); } else if (argv.length == 2) { String userid = argv[0]; String passwd = argv[1]; // connect with user-provided username and password con = DriverManager.getConnection(url, userid, passwd); (4) } else { System.out.println("Usage: java DB2Appl [username password]"); System.exit(0); } // retrieve data from the database System.out.println("Retrieve some data from the database..."); Statement stmt = con.createStatement(); (5) ResultSet rs = stmt.executeQuery("SELECT * from employee"); (6) System.out.println("Received results:"); // display the result set // rs.next() returns false when there are no more rows while (rs.next()) { (7) String a = rs.getString(1); (8) String str = rs.getString(2); System.out.print(" empno= " + a); System.out.print(" firstname= " + str); System.out.print(""); } rs.close(); stmt.close(); // update the database System.out.println("Update the database... "); stmt = con.createStatement(); int rowsUpdated = stmt.executeUpdate("UPDATE employee SET firstnme = 'SHILI' where empno = '000010'");(9) System.out.print("Changed "+rowsUpdated); if (1 == rowsUpdated) System.out.println(" row."); else System.out.println(" rows."); stmt.close(); con.close(); } catch( Exception e ) { System.out.println(e); } } }
´Ù¸¥ Java ÀÀ¿ëÇÁ·Î±×·¥ÀÇ °æ¿ì¿Í ¸¶Âù°¡Áö·Î JDBC ÀÀ¿ëÇÁ·Î±×·¥À» ºÐ¹èÇϽʽÿÀ. ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ DB2 Ŭ¶óÀÌ¾ðÆ®¸¦ »ç¿ëÇÏ¿© DB2 ¼¹ö¿Í Åë½ÅÇϹǷΠƯº°È÷ º¸¾È¿¡ ½Å°æ¾µ Çʿ䰡 ¾ø½À´Ï´Ù. ±ÇÇÑ °ËÁõÀº DB2 Ŭ¶óÀÌ¾ðÆ®¿¡¼ ¼öÇàÇÕ´Ï´Ù.
Ŭ¶óÀÌ¾ðÆ® ¸Ó½Å¿¡¼ ÀÀ¿ëÇÁ·Î±×·¥À» ¼öÇàÇÏ·Á¸é ±× ¸Ó½Å¿¡ ´ÙÀ½À» ¼³Ä¡ÇØ¾ß ÇÕ´Ï´Ù.
ÀÀ¿ëÇÁ·Î±×·¥À» ºôµåÇÏ·Á¸é ¿î¿µ üÁ¦¿ë JDKµµ ¼³Ä¡ÇØ¾ß ÇÕ´Ï´Ù. Java ȯ°æ ¼³Á¤, DB2 Java ÀÀ¿ëÇÁ·Î±×·¥ ºôµå ¹× DB2 Java ÀÀ¿ëÇÁ·Î±×·¥ ¼öÇà¿¡ ´ëÇØ¼´Â ÀÀ¿ëÇÁ·Î±×·¥ ºôµå ¾È³»¼¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
´Ù¸¥ Java ¾ÖÇø´°ú ¸¶Âù°¡Áö·Î ÀÎÆ®¶ó³ÝÀ̳ª ÀÎÅͳݰú °°Àº ³×Æ®¿öÅ©¿¡¼ JDBC ¾ÖÇø´À» ºÐ¹èÇÕ´Ï´Ù. º¸Åë HTML ÆäÀÌÁö¿¡ ¾ÖÇø´À» EmbedÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, sqllib/samples/java¿¡ ÀÖ´Â »ùÇà ¾ÖÇø´ DB2Applt.java¸¦ È£ÃâÇϱâ À§ÇØ ´ÙÀ½ <APPLET> ű׸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
<applet code="DB2Applt.class" width=325 height=275 archive="db2java.zip"> <param name="server" value="webhost"> <param name="port" value="6789"> </applet>
¾ÖÇø´À» ¼öÇàÇÏ·Á¸é ´ÜÁö Ŭ¶óÀÌ¾ðÆ® ¸Ó½Å¿¡ Java Áö¿ø À¥ ºê¶ó¿ìÀú¸¸ ÀÖÀ¸¸é µË´Ï´Ù. HTML ÆäÀÌÁö¸¦ ·ÎµåÇÒ¶§ ¾ÖÇø´ ű׿¡¼ ºê¶ó¿ìÀú¿¡ ¾ÖÇø´ ¹× db2java.zip Ŭ·¡½º ¶óÀ̺귯¸®¸¦ ´Ù¿î·ÎµåÇϵµ·Ï Áö½ÃÇÕ´Ï´Ù. ÀÌ Å¬·¡½º ¶óÀ̺귯¸®¿¡´Â COM.ibm.db2.jdbc.net Ŭ·¡½º¿¡¼ ±¸ÇöÇÏ´Â DB2 JDBC µå¶óÀ̹ö°¡ ÀÖ½À´Ï´Ù. ¾ÖÇø´¿¡¼ JDBC API¸¦ È£ÃâÇÏ¿© DB2¿¡ ¿¬°áÇϸé JDBC µå¶óÀ̹ö¿¡¼ À¥ ¼¹ö¿¡¼ ¼öÇà ÁßÀÎ JDBC ¾ÖÇø´ ¼¹ö¸¦ ÅëÇØ DB2 µ¥ÀÌÅͺ£À̽º¿Í º°µµÀÇ Åë½ÅÀ» ¼³Á¤ÇÕ´Ï´Ù.
ÁÖ: | À¥ ºê¶ó¿ìÀú°¡ ¼¹ö¿¡¼ db2java.zipÀ» ´Ù¿î·ÎµåÇÏ·Á¸é Ŭ¶óÀÌ¾ðÆ®¿¡¼ CLASSPATH ȯ°æ º¯¼ö´Â db2java.zipÀ» Æ÷ÇÔÇÏÁö ¸»¾Æ¾ß ÇÕ´Ï´Ù. ¾ÖÇø´Àº Ŭ¶óÀÌ¾ðÆ®°¡ db2java.zipÀÇ Áö¿ª ¹öÀüÀ» »ç¿ëÇÏ´Â °æ¿ì Á¦´ë·Î ±â´ÉÇÏÁö ¸øÇÕ´Ï´Ù. |
Java ¾ÖÇø´ ºôµå ¹× ºÐ¹è¿¡ ´ëÇØ¼´Â ÀÀ¿ëÇÁ·Î±×·¥ ºôµå ¾È³»¼¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
JDBC 2.0Àº ÃֽйöÀüÀÇ Sun JDBCÀÔ´Ï´Ù. ÀÌ ¹öÀüÀÇ JDBC¿¡´Â µÎ °³ÀÇ Á¤ÀÇµÈ ÆÄÆ®, ÄÚ¾î API¿Í ¼±ÅÃÀû ÆÐŰÁö API°¡ ÀÖ½À´Ï´Ù. JDBC ½ºÆå¿¡ ´ëÇØ¼´Â
DB2 Universal Database Java À¥ »çÀÌÆ® ¸¦ ÂüÁ¶ÇϽʽÿÀ.
¿î¿µ üÁ¦¿¡ ´ëÇØ JDBC 2.0 µå¶óÀ̹ö¸¦ ¼³Ä¡ÇÏ´Â °Í¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ÀÀ¿ëÇÁ·Î±×·¥ ºôµå ¾È³»¼À» ÂüÁ¶ÇϽʽÿÀ.
DB2 JDBC 2.0 µå¶óÀ̹ö¿¡¼´Â JDBC 2.0 ÄÚ¾î API¸¦ Áö¿øÇÏÁö¸¸ ½ºÆå¿¡ Á¤ÀÇµÈ ¸ðµç ÇÇó¸¦ Áö¿øÇÏ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. DB2 JDBC 2.0 µå¶óÀ̹ö´Â JDBC 2.0 ÄÚ¾î APIÀÇ ´ÙÀ½ ±â´ÉÀ» Áö¿øÇÕ´Ï´Ù.
ÁÖ: | DB2´Â ÀúÀå ÇÁ·Î½Ãµà¾î, UDF ¶Ç´Â ¸Þ¼Òµå¿¡¼ java.sql.BlobÀ̳ª java.sql.ClobÀÇ »ç¿ëÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. |
DB2 JDBC 2.0 µå¶óÀ̹ö´Â ´ÙÀ½ ±â´ÉÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.
DB2 JDBC 2.0 µå¶óÀ̹ö´Â JDBC 2.0 ¼±ÅÃÀû ÆÐŰÁö APIÀÇ ´ÙÀ½ ±â´ÉÀ» Áö¿øÇÕ´Ï´Ù.
DB2´Â Java ¸í¸í ¹× µð·ºÅ丮 ÀÎÅÍÆäÀ̽º(JNDI)¿¡ ´ëÇØ ´ÙÀ½°ú °°Àº Áö¿øÀ» Á¦°øÇÕ´Ï´Ù.
Hashtable env = new Hashtable( 5 ); env.put( "java.naming.factory.initial", "COM.ibm.db2.jndi.DB2InitialContextFactory" ); Context ctx = new InitialContext( env );
DB2ConnectionPoolDataSource¿Í DB2PooledConnectionÀº ´ÙÀ½°ú °°ÀÌ ÀÚü ¿¬°á Ç®¸µ ¸Þ¼Òµå¸¦ ±¸ÇöÇÏ´Â µ¥ ÇÊ¿äÇÑ ÈÄÅ©¸¦ Á¦°øÇÕ´Ï´Ù.
DB2´Â DB2 JDBC ÀÀ¿ëÇÁ·Î±×·¥ µå¶óÀ̹ö¸¦ ÅëÇØ Java Æ®·£Àè¼Ç API(JTA)¸¦ Áö¿øÇÕ´Ï´Ù. DB2´Â DB2 JDBC ³×Æ® µå¶óÀ̹ö·Î JTA Áö¿øÀ» Á¦°øÇÏÁö ¾Ê½À´Ï´Ù.
ÀÌ ¹öÀüÀÇ ½ºÆåÀº ÀÌÀü ¹öÀüÀÎ 1.22¿Í ¿ªÈ£È¯¼ºÀ» À¯ÁöÇÕ´Ï´Ù. ±×·¯³ª DB2 JDBC 1.22 µå¶óÀ̹ö¿¡¼´Â LOB À¯ÇüÀ» JDBC 1.22 ½ºÆåÀÇ È®ÀåÀ¸·Î Áö¿øÇϸç ÀÌ È®ÀåÀº »õ·Î¿î ½ºÆåÀÇ ¿ªÈ£È¯¼ºÀÇ ÀϺΰ¡ µÇÁö ¾Ê½À´Ï´Ù. Áï, JDBC 1.22 µå¶óÀ̹öÀÇ LOB Áö¿ø¿¡ ÀÇÁ¸ÇÏ´Â ±âÁ¸ JDBC ÀÀ¿ëÇÁ·Î±×·¥ÀÌ »õ·Î¿î µå¶óÀ̹ö¿¡ ´ëÇØ ÀÛµ¿ÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. LOB ¹× ±×·¡ÇÈ À¯Çü¿¡ ´ëÇÑ DB2 JDBC 1.22 µå¶óÀ̹ö Áö¿øÀº JDBC 1.22¿¡ LOB ¹× ±×·¡ÇÈ ¿ÀºêÁ§Æ® »ç¿ë¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ. ¹®Á¦¸¦ ÇØ°áÇÏ·Á¸é ÀÀ¿ëÇÁ·Î±×·¥À» ¼öÁ¤ÇÏ¿© JDBC 2.0 µå¶óÀ̹ö¿¡¼ Á¦°øµÇ´Â LOB Áö¿øÀ» »ç¿ëÇÏ´Â °Í¿¡ ´ëÇØ °í·ÁÇϽʽÿÀ.
ÁÖ: | ÀúÀå ÇÁ·Î½Ãµà¾î ¶Ç´Â UDF¿¡ ÀÖ´Â LOB¿Í ±×·¡ÇÈ À¯ÇüÀÇ DB2 JDBC 2.0 µå¶óÀ̹ö Áö¿øÀ» »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ÀúÀå ÇÁ·Î½Ãµà¾î³ª UDF¿¡¼ LOB ¶Ç´Â ±×·¡ÇÈ À¯ÇüÀ» »ç¿ëÇÏ·Á¸é JDBC 1.22 µå¶óÀ̹ö Áö¿øÀ» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. |
±×·¯³ª ÀÌ ¼Ö·ç¼ÇÀÌ ¸ðµç »óȲ¿¡ ÀûÇÕÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ÀϽÃÀûÀÎ ÇØ°áÃ¥À¸·Î JDBCVERSION Ű¿öµå¸¦ "122"·Î ¼³Á¤ÇÏ¿© 1.22 ¹öÀüÀÇ LOB Áö¿øÀ» »ç¿ëÇϵµ·Ï JDBC 2.0 µå¶óÀ̹ö¿¡ Áö½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ±âº»°ª "200"À¸·Î ¼³Á¤Çϸé JDBC 2.0 µå¶óÀ̹ö¿¡¼ 2.0 ¹öÀüÀÇ LOB Áö¿øÀ» »ç¿ëÇÕ´Ï´Ù. db2cli.ini¿¡¼ ÀÌ Å°¿öµå¸¦ ¼³Á¤Çϰųª getConnection Ư¼º ÀμöÀÇ ¿¬°á ¼Ó¼ºÀÌ ÀÖ½À´Ï´Ù.
ÁÖ: | JDBC 1.22 µå¶óÀ̹ö¸¦ »ç¿ëÇÒ °æ¿ì JDBCVERSION Ű¿öµå´Â JDBC¿¡ ´ëÇÑ LOB Áö¿ø¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù. |