[] STUDY ³»¿ë

ÀÛ¼ºÀÏ 2003-10-21
ÀÛ¼ºÀÚ park
Á¶È¸¼ö 906
Á¦ ¸ñ Applet¿¡¼­ DB¿¬°á

¸ñ·ÏÀ¸·Î | ¼öÁ¤ | »èÁ¦ | Á¤º¸Ãß°¡[reply] | ½Å±ÔÀÔ·Â

JDBC(Java DataBase Connectivity)

Àڹ٠ǥÁØ µ¥ÀÌÅͺ£À̽º ÀÎÅÍÆäÀ̽º¸¦ ¶æÇϸç ÀÚ¹Ù ÇÁ·Î±×·¥°ú µ¥ÀÌÅͺ£À̽º¸¦ ¿¬°áÇÏ´Â ÇϳªÀÇ Åë·Î¸¦ ÀǹÌÇÑ´Ù.

Interface

ÀÎÅÍÆäÀ̽º´Â ¸öü°¡ ¾ø´Â ¸Þ¼­µåµé·Î ÀÌ·ç¾îÁø Ŭ·¡½º¸¦ ¶æÇϸç ÀÚ¹Ù¿¡¼­´Â ´ÙÁß »ó¼ÓÀ» ±¸ÇöÇϱâ À§ÇØ ¸¹Àº ºÎºÐÀ» ÀÎÅÍÆäÀ̽º ÇüÅ·ΠŬ·¡½º¸¦ Áö¿øÇÑ´Ù.

JDBCµµ ÀÏÁ¾ÀÇ µ¥ÀÌÅͺ£À̽ºÀÇ ¿¬°áÅë·Î·Î »ç¿ëµÇ´Â ÀÎÅÍÆäÀ̽º·Î ´ëºÎºÐÀÇ µ¥ÀÌÅÍ º£À̽º ȸ»çµéÀº Sun»ç·Î ºÎÅÍ JDBCÀÎÅÍÆäÀ̽º¸¦ Á¦°ø¹Þ¾Æ ÀڽŵéÀÇ µ¥ÀÌÅÍ º£À̽º¿¡ ¸Â°Ô ±â´ÉÀ» ºÎ¿©ÇÑ °ÍÀ» ¸»ÇÑ´Ù.

µû¶ó¼­ »ç¿ëÀÚµéÀº JDBCÀÇ ³»ºÎ ±¸Á¶¸¦ ¾ËÁö ¸øÇÏ´õ¶ó°í interface¸¸ ¾Ë¸é µ¥ÀÌÅÍ º£À̽º¸¦ Á¶ÀÛÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù. ÀÌ·¯ÇÑ µ¥ÀÌÅͺ£À̽º ÀÎÅÍÆäÀ̽ºÀÇ Á¾·ù·Î´Â JDBC, ODBCµîÀÌ ÀÖ´Ù.

JDBC µå¶óÀ̹öÀÇ Á¾·ù

img3.gif

JDBC-ODBC Driver

À©µµ¿ì °è¿­¿¡¼­¸¸ »ç¿ë°¡´ÉÇÏ¸ç °¢°¢ÀÇ Å¬¶óÀ̾ðÆ® ÄÄÇ»ÅÍ¿¡ ODBC µå¶óÀ̹ö°¡ »çÀü¿¡ ¼³Ä¡µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù.

JDBC-Net Driver

ƯÁ¤ µ¥ÀÌÅͺ£À̽º¿¡ Á¾¼ÓµÇÁö ¾Ê´Â´Ù. °³º°ÀûÀÎ µ¥ÀÌÅͺ£À̽º ¼­¹ö°¡ ±× ÇÁ·ÎÅäÄÝÀ» ¹Þ¾Æ ÀÚüÀûÀ¸·Î ¹ø¿ªÇÏ¿© ½ÇÇàÇÑ´Ù. JDBCÀÇ Á¾·ùÁß °¡Àå À¯¿¬¼ºÀÌ ÀÖ´Â µå¶óÀ̹ö¶ó ÇÒ ¼ö ÀÖ´Ù.

Native Driver

°³º°ÀûÀÎ µ¥ÀÌÅͺ£À̽º ¾÷ü¿¡¼­ Áö¿øÇÏ°í ÀÖ´Â JDBCµå¶óÀ̹ö·Î JDBC¹®À» Á÷Á¢ °³º° µ¥ÀÌÅͺ£À̽º ÇÁ·ÎÅäÄÝ·Î º¯È¯ÇÏ¿© ÁØ´Ù. ÀÎÆ®¶ó³Ý ±¸Ãà¿¡ ÀÖ¾î °¡Àå À¯¿ëÇÑ ¹æ¹ýÀ̶ó ÇÒ ¼ö ÀÖ´Ù.

µå¶óÀ̹öÀÇ µî·Ï

Dirverµî·ÏÀº Å©°Ô µÎ°¡Áö ¹æ¹ýÀ» Á¦½ÃÇÑ´Ù.

ClassŬ·¡½ºÀÇ forName() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ý(µå¶óÀ̹ö¸¦ Á÷Á¢ ¼±ÅÃÇؼ­ ·ÎµùÇÏ°íÀÚ ÇÒ¶§)

?Class.forName(¡°sun.jdbc.odbc.JdbcOdbcDriver¡±); // MS-SQL
?Class.forName(¡°postgresql.Driver¡±); // PostgreSQL
?Class.forName(¡°oracle.jdbc.driver.OracleDriver¡±); // Oracle DB
?Class.forName(¡°org.gjt.mm.mysql.Driver¡°); // My-SQL

mysql¿ë µå¶óÀ̹ö´Â java¿¡¼­ Áö¿øÇÏÁö ¾Ê´Â´Ù. µû¶ó¼­ ÇØ´ç µå¶óÀ̹ö¸¦ µû·Î ´Ù¿î·Îµå ¹Þ¾Æ ¼³Ä¡ÇÏ¿©¾ß ÇÑ´Ù.

DriverManager.registerDriver() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ý(ƯÁ¤ µå¶óÀ̹ö¸¦ µî·ÏÇÏ°íÀÚ ÇÒ¶§)

?DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
?DriverManager.registerDriver(new postgresql.Driver());
?DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
?DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());

MS-Windows¿¡¼­ MySQL JDBC µå¶óÀ̹ö ¼³Ä¡Çϱâ

Mysql°ú Java´Â ÇöÀç ½Ã½ºÅÛ¿¡ ¼³Ä¡µÇ¾îÀÖ¾î¾ß ÇÑ´Ù.

Java ´Â c:java¿¡ ¼³Ä¡µÇ¾ú´Ù°í °¡Á¤ÇÑ´Ù.

1. µå¶óÀ̹ö ´Ù¿î·Îµå

www.mysql.com ¿¡ Á¢¼ÓÇÏ¿© Àû´çÇÑ µå¶óÀ̹ö¸¦ ´Ù¿î·ÎµåÇÑ´Ù.

ÆÄÀϸíÀº mysql-connector-java-¹öÁ¯-stable.zip ¿Í À¯»çÇÒ °ÍÀÌ´Ù.

2. ´Ù¿î·ÎµåÇÑ ÆÄÀÏÀÇ ¾ÐÃàÀ» ÇØÁ¦ÇÏ°í

3. ¾ÐÃà ÇØÁ¦µÈ µð·ºÅ丮 ¾ÈÀÇ ÆÄÀÏ Áß mysql-connector-java-¹öÁ¯-stable-bin.jar ÆÄÀÏÀ»

c:javalib µð·ºÅ丮¾È¿¡ º¹»çÇÑ´Ù. (´Ù¸¥ ÆÄÀÏÀº º¹»çÇÏÁö ¾Ê¾Æµµ µÈ´Ù)

4. ½Ã½ºÅÛ µî·ÏÁ¤º¸ -> »ç¿ëÀÚ º¯¼ö Ç׿¡ ¡°CLASSPATH¡±¸¦ ÆíÁýÇϰųª Ãß°¡ÇÑ´Ù.

;c:javalibmysql-connector-java-¹öÁ¯-stable-bin.jar

5. ½Ã½ºÅÛÀ» Àç ºÎÆÃÇÏ°í CLASSPATH¸¦ È®ÀÎÇÑ´Ù.

c:>echo %classpath%

Linux ¿¡¼­ MySQL JDBC µå¶óÀ̹ö ¼³Ä¡Çϱâ

ÀÚ¹Ù´Â /usr/local/java¿¡ ¼³Ä¡µÇ¾ú´Ù°í °¡Á¤ÇÑ´Ù.

1. µå¶óÀ̹ö ´Ù¿î·Îµå

www.mysql.com ¿¡ Á¢¼ÓÇÏ¿© Àû´çÇÑ µå¶óÀ̹ö¸¦ ´Ù¿î·ÎµåÇÑ´Ù.

ÆÄÀϸíÀº mysql-connector-java-¹öÁ¯-stable.tar.gz ¿Í À¯»çÇÒ °ÍÀÌ´Ù.

2. ´Ù¿î·ÎµåÇÑ ÆÄÀÏÀÇ ¾ÐÃàÀ» ÇØÁ¦ÇÏ°í

tar xvfz mysql-connector-java-¹öÁ¯-stable.tar.gz

3. ¾ÐÃà ÇØÁ¦µÈ µð·ºÅ丮 ¾ÈÀÇ ÆÄÀÏ Áß mysql-connector-java-¹öÁ¯-stable-bin.jar ÆÄÀÏÀ»

/usr/local/java/lib µð·ºÅ丮¾È¿¡ º¹»çÇÑ´Ù. (´Ù¸¥ ÆÄÀÏÀº º¹»çÇÏÁö ¾Ê¾Æµµ µÈ´Ù)

4. /etc/profile ¿¡ ¡°CLASSPATH¡±¸¦ ÆíÁýÇϰųª Ãß°¡ÇÑ´Ù.

export CLASSPATH=¡°.:/usr/local/java/lib/mysql-connector-java-¹öÁ¯-stable-bin.jar

5. CLASSPATH¸¦ È®ÀÎÇÑ´Ù.

$ source profile

$ echo $CLASSPATH

MySQLÀÇ ½ÇÇà±ÇÇÑ

µ¥ÀÌÅͺ£À̽º¸¦ ¿ø°ÝÁö¿¡¼­ ÀÚÀ¯·Ó°Ô ½ÇÇàÇÏ·Á¸é µ¥ÀÌÅͺ£À̽º³ª Å×ÀÌºí¿¡ ½ÇÇà±ÇÇÑÀ» ºÎ¿©ÇÏ¿©¾ß ÇÑ´Ù. ƯÁ¤ DBÀÇ Å×À̺í±îÁö »ç¿ëÀÚº°·Î »ç¿ë±ÇÇÑÀ» µû·Î ºÎ¿©ÇÒ¼öµµ ÀÖÁö¸¸ ¼ö¾÷¹üÀ§ ¹Û¿¡ Àֱ⠶§¹®¿¡ test µ¥ÀÌÅÍ º£À̽ºÀÇ ¸ðµç Å×ÀÌºí¿¡ °üÇÑ ¸ðµç ½ÇÇà±ÇÀ»À» ¾òµµ·Ï ÇØ º¸ÀÚ.

¿øµµ¿ì¿ëÀ̵ç, Linux¿ëÀÌµç ±× »ç¿ë¹æ¹ýÀº µ¿ÀÏÇÏ´Ù.

1) DBÀ» root±ÇÇÑÀ¸·Î ½ÇÇàÇÏÀÚ.

mysql -u root -p

2) ±ÇÇÑÀ» ºÎ¿©ÇÒ DB¸¦ ¿ÀÇÂÇÏÀÚ.

use test ; // »ç¿ëÇÒ DB¸íÀÌ test ÀÌ´Ù.

3) ±ÇÇÑÀ» ºÎ¿©ÇØ º¸ÀÚ.

grant all on test.* to park identified by ¡®1111¡¯;

grant all -> ¸ðµç ±ÇÇÑ(Àбâ, ¾²±â, ¼öÁ¤, »èÁ¦¡¦)

on test.* -> test DB¾ÈÀÇ ¸ðµç Å×À̺í

to park -> À¯Àú park¿¡°Ô

identified by ¡®1111¡¯ -> ¾ÏÈ£ ¡®1111¡¯·Î Á¢±ÙÇϵµ·Ï Çã¿ë

MySQL JDBC µå¶óÀ̹ö°¡ Á¤»óÀûÀ¸·Î ¼³Ä¡µÇ¾ú´Â°¡¸¦ Å×½ºÆ® Çغ¸ÀÚ

import java.sql.*;

public class JavaDB1 {

Connection conn = null;

public JavaDB1() {

try
{

Class.forName ("org.gjt.mm.mysql.Driver").newInstance ();

// localhost : ¼­¹öÁÖ¼Ò
// 3306 : Æ÷Æ®¹øÈ£ (Àû´çÇÑ ¹øÈ£¸¦ ¼³Á¤:»ý·«°¡´É)
// test : µ¥ÀÌÅͺ£À̽º À̸§ , root : DB»ç¿ëÀÚ¸í, 1111 : »ç¿ëÀÚ ºñ¹Ð¹øÈ£
// jdbc:mysql -> mysqlÀ» subprotocolÀ̶óÇÑ´Ù.

conn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/test¡±, "root", "1111");
System.out.println ("¼º°ø !!!");
conn.close();
}
catch (Exception e)
{
System.out.println (¡°Error !!!¡° + e);
}
}

JDBCÀ» »ç¿ëÇϱâ À§ÇÑ ¼¼ºÎ ÀýÂ÷

1. JDBC¸¦ »ç¿ëÇϱâ À§ÇØ java.sql.* ÆÐÅ°Áö¸¦ Æ÷ÇÔÇÑ´Ù.

import java.sql.*;

2. MySQL JDBC µå¶óÀ̹ö¸¦ µî·ÏÇÑ´Ù.

Class.forName(¡°org.gjt.mm.mysql.Driver¡±).newInstance();

3. Connection°´Ã¼¿¡ DriverManager.getConnection()¸¦ ´ëÀÔÇÔÀ¸·Î MySQL ¼­¹ö¿¡ ¿¬°áÇÑ´Ù.

Connection conn= null;
conn= DriverManager.getConnection ("jdbc:mysql://localhost:3306/test
¡±, "root", "1111");


getConnectionÁÖ¿ä À¯Çü

getConnection(String url)
getConnection(String url, String user_name, String password)

String url¿¡ url°ú »ç¿ëÀÚ, ¾ÏÈ£ ¸ðµÎ¸¦ Ç¥½ÃÇÏ·Á¸é ¾Æ·¡¿Í °°ÀÌ ±â¼úÇÑ´Ù.

url=¡°jdbc:mysql://localhost:3306/test?user=root&password=1111";

4. Connection °´Ã¼·Î ºÎÅÍ Statement °´Ã¼³ª PreparedStatement °´Ã¼¸¦ »ý¼ºÇÑ´Ù. ÀÌ Statement°´Ã¼´Â Äõ¸®¸¦ Çϰųª ÀÛ¾÷ ¸í·ÉÀ» Àü´ÞÇϴµ¥ »ç¿ëµÈ´Ù

Statement stmt = conn.createStatement();

5. selectµîÀÇ SQL¹®ÀåÀ» »ç¿ëÇϸé ó¸® °á°ú¸¦ ¸®ÅÏ¹Þ¾Æ ÀúÀåÇØ¾ß Çϴµ¥ À̸¦ ResultSetÀ̶ó´Â °¡»óÀÇ Å×ÀÌºí¿¡ ÀúÀåÇÑ´Ù.

ResultSet record=stmt.excuteQuery(sql)

À§ÀÇ ¹®ÀåÀ» ¼öÇàÇϸé StringÇüÅÂÀÇ sql¹®ÀåÀÌ ½ÇÇàµÇ¾î ±× °á°ú¸¦ °¡»ó Å×À̺í record¿¡ Àü´ÞÇÑ´Ù.

ResultSetÀÇ ÁÖ¿ä ¸Þ¼Òµå

first()

óÀ½À¸·Î

next()

´ÙÀ½À¸·Î

last()

¸¶Áö¸·À¸·Î

previous()

ÀÌÀüÀ¸·Î

isFirst()

óÀ½Àΰ¡

isLast()

¸¶Áö¸·Àΰ¡

getXXX(Çʵå¸í)

ÇʵåÀÇ µ¥ÀÌÅÍ À¯Çü¿¡ ¸Â°Ô get¸í·ÉÀÌ µû·Î Á¸ÀçÇϸç, ÇʵåÀÇ À¯Çü°ú µ¿ÀÏÇØ¾ß ÇÑ´Ù.

updateXXX(Çʵå¸í, µ¥ÀÌÅÍ)

getXXX()¿Í À¯»çÇÏ¸ç ´ÜÁö µ¥ÀÌÅ͸¦ DB¿¡ updateÇÑ´Ù.

¸¸¾à SQLÀÇ Ã³¸® °á°ú¸¦ ÀúÀåÇÒ ÇÊ¿ä°¡ ¾ø´Â insert, delete, updateµîÀÇ SQL¹®ÀåÀº executeUpdate(sql)¸í·ÉÀ» »ç¿ëÇÑ´Ù.

stmt.executeUpdate(sql); // ÁöÁ¤µÈ sql¹®ÀåÀ» ¹Ù·Î ½ÇÇàÇÑ´Ù.

Applet¿¡¼­ DataBase¿¬µ¿Çϱâ

ÀϹÝÀûÀ¸·Î Applet¿¡¼­´Â Database¸¦ Á÷Á¢ ¿¬µ¿ÇÏÁö ¾Ê´Â´Ù. ¿©·¯ ´Ü°èÀÇ º¸¾È¿À·ù°¡ ¹ß»ýÇϱ⠶§¹®ÀÌ´Ù. À̸¦ ÇØ°áÇÏ·Á¸é ¸¹Àº ºÎºÐÀÇ º¸¾ÈÀ» ÇØÁ¦Çϰųª ½ÂÀι޴ ÀýÂ÷¸¦ °ÅÃÄ¾ß ÇÑ´Ù.

º¸¾È¿¡ ´ëÇÑ ½ÂÀΰú ÇØÁ¦ ÀýÂ÷¾øÀÌ Applet¿¡¼­ Database¸¦ »ç¿ëÇÏ·Á¸é 3-tier¹æ½ÄÀ¸·Î Database¸¦ ¿¬°áÇÑ´Ù. ¾Æ·¡ÀÇ ±×¸²À» º¸ÀÚ.

img2.gif

À§ÀÇ Àâ¾÷ È帧À» »ìÆ캸¸é, ÀϹÝÀûÀΠäÆà ÇÁ·Î±×·¥ÀÇ È帧°ú º°¹Ý ´Ù¸¦ °Ô ¾ø´Ù. ´Ù¸¸ Applet¿¡¼­ÀÇ SendingÀº µ¥ÀÌÅͺ£À̽º¸¦ Äõ¸®ÇÒ ¹®ÀåÀ̳ª ±×¿¡ »óÀÀÇÏ´Â ¹®ÀÚ¿­°ú µ¥ÀÌÅÍ°ªÀÌ ¼­¹öÃø(Application)À¸·Î Àü¼ÛµÇ°í, ApplicationÀÇ SendingÀº µ¥ÀÌÅͺ£À̽ºÀÇ Ã³¸®°á°ú¸¦ Ŭ¶óÀ̾ðÆ®(Applet)À¸·Î SendingÇÒ »ÓÀÌ´Ù.

äÆà ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù¸é Applet¿¡¼­ µ¥ÀÌÅͺ£À̽º¸¦ ¿¬µ¿ÇÏ´Â °ÍÀº ±×¸® ¾î·ÆÁö ¾Ê°Ô ÇÁ·Î±×·¡¹ÖÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÇÑ°¡Áö À¯ÀÇÇÒ Á¡Àº ÀϹÝÀûÀÎ ´ÙÁß Á¢¼Ó äÆà ÇÁ·Î±×·¥Àº ¼­¹ö°¡ ¼ö½ÅÇÑ Á¤º¸¸¦ Á¢¼ÓÇÑ ¸ðµç Ŭ¶óÀ̾ðÆ®¿¡°Ô Àü¼ÛÇØ ÁÖ¾î¾ß¸¸ ÇÏÁö¸¸ µ¥ÀÌÅͺ£À̽º¸¦ ¿¬µ¿ÇÏ´Â ÇÁ·Î±×·¥Àº ¹Ýµå½Ã ±×·¡¾ß¸¸ ÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. ¿ÀÈ÷·Á Äõ¸®³ª ±×¿¡ »óÀÀÇÏ´Â µ¥ÀÌÅÍ°ªÀ» SendingÇÑ Å¬¶óÀ̾ðÆ®¿¡°Ô¸¸ ±× ó¸® °á°ú¸¦ ³Ñ°ÜÁà¾ß ÇÒ ¶§°¡ ´õ ¸¹´Ù.


Applet¿¡¼­ DB¿¬°á °ú(¿Í) °ü·ÃµÈ Ãß°¡ Á¤º¸

  • Applet¿¡¼­ DB¿¬°á [2003-10-21] [park´Ô Àç°ø] [Á¶È¸:906]

    ¸ñ·ÏÀ¸·Î | ¼öÁ¤ | »èÁ¦ | Á¤º¸Ãß°¡[reply] | ½Å±ÔÀÔ·Â