¿À¶óŬ JDBC µå¶óÀ̹ö ¼³Ä¡ ¹× Å×½ºÆ®
1. ¿À¶óŬ JDBC µå¶óÀ̹ö ¼³Ä¡
ÀÚ¹Ù JDBC ÇÁ·Î±×·¡¹ÖÀ» Çϱâ À§Çؼ´Â µ¥ÀÌÅͺ£À̽º¿¡ ¸Â´Â JDBCµå¶óÀ̹ö¸¦ ¼³Ä¡ÇØ¾ß ÇÕ´Ï´Ù.
¿À¶óŬÀÇ °æ¿ì¿¡´Â ¿À¶óŬ¿ë JDBC µå¶óÀ̹ö¸¦ µû·Î ±¸ÀÔÇϰųª ÀÎÅͳݿ¡¼ ã¾Æ¼ ¼³Ä¡ÇÒ Çʿ䰡 ¾ø½À´Ï´Ù. ¿À¶óŬ¿ë JDBCµå¶óÀ̹öµéÀº [ORACLE_HOME]\jdbc\lib ¿¡ ÀÖ½À´Ï´Ù.
[ORACLE_HOME]
¿©±â¼ [ORACLE_HOME]Àº ¿À¶óŬ ¼³Ä¡°Á¿¡¼ ¼³Ä¡°úÁ¤ Áß Ã¹¹øÂ° ±×¸²ÀÎ ¼³Ä¡¹æ½Ä â¿¡¼ OraclȨ À§Ä¡¿¡ ÀÔ·ÂÇß´ø µð·ºÅ丮¸¦ ÆíÀÇ»ó ±âÈ£ÈÇÑ °ÍÀÔ´Ï´Ù.
Âü°í·Î ÇÊÀÚÀÇ [ORACLE_HOME]Àº F:\oracle\product\10.2.0\db_1 ÀÔ´Ï´Ù.
ÀÌÁ¦ [ORACLE_HOME]\jdbc\lib µð·ºÅ丮¿¡ ÀÖ´Â µå¶óÀ̹ö Áß¿¡¼ Thinµå¶óÀ̹öÀÎ classes12.jar À» CLASSPATH ¿¡ Ãß°¡ÇÕ´Ï´Ù.
ÀÚ¹Ù ¼³Ä¡¿¡¼ ¼³Á¤ÇÑ ´ë·Î ÇöÀç´Â . ¸¸ CLASSPATH ¿¡ ÀÖ½À´Ï´Ù.
ÇÊÀÚ´Â .;F:\oracle\product\10.2.0\db_1\jdbc\lib\classes12.jar ¸¦ CLASSPATH ¿¡ Ãß°¡Çß½À´Ï´Ù.
´ÙÀ½À¸·Î ¸í·É ÇÁ·ÒÇÁÆ®¸¦ »õ·Î ¶ç¿ì°í set classpath ÀÌ¿ëÇÏ¿© CLASSPATH °¡ Á¦´ë·Î ÀâÇû´ÂÁö È®ÀÎÇÕ´Ï´Ù.
F:\>set classpath CLASSPATH=.;F:\oracle\product\10.2.0\db_1\jdbc\lib\classes12.jar; F:\>
À̰ÍÀ¸·Î ¿À¶óŬ JDBC µå¶óÀ̹ö ¼³Ä¡¸¦ ¿Ï·áÇß½À´Ï´Ù.
2. Å×½ºÆ®
JDBC µå¶óÀ̹ö ¼³Ä¡°¡ ¿Ã¹Ù¸£°Ô ¼³Ä¡µÇ¾ú´ÂÁö °£´ÜÇÑ Å×½ºÆ® ÆÄÀÏÀ» ¸¸µé¾î¼ Å×½ºÆ® ÇϰڽÀ´Ï´Ù.
´ÙÀ½ Å×½ºÆ® ÆÄÀÏÀº scott °èÁ¤ÀÇ table Áß emp Å×À̺íÀ» Äõ¸®ÇÏ¿© ·¹Äڵ带 »Ñ·ÁÁÖ´Â ÆÄÀÏÀÔ´Ï´Ù.
GetEmp.java
import java.sql.*;
public class GetEmp {
public static void main( String[] args ) {
// À§ ºÎºÐÀº ¼³Ä¡°úÁ¤¿¡¼ ÀÚ½ÅÀÌ Á¤ÇÑ Á¤º¸¿¡ ¸Â°Ô ¹Ù²Û´Ù.
String DB_URL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
String DB_USER = "scott";
String DB_PASSWORD = "tiger";
Connection conn;
Statement stmt;
ResultSet rs;
String query = "select * from emp";
try {
// µå¶óÀ̹ö¸¦ ·ÎµùÇÑ´Ù.
Class.forName("oracle.jdbc.driver.OracleDriver");
// µ¥ÀÌÅͺ£À̽ºÀÇ ¿¬°áÀ» ¼³Á¤ÇÑ´Ù.
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
// Statement¸¦ °¡Á®¿Â´Ù.
stmt = conn.createStatement();
// SQL¹®À» ½ÇÇàÇÑ´Ù.
rs = stmt.executeQuery(query);
while (rs.next()) {
String empno = rs.getString(1);
String ename = rs.getString(2);
String job = rs.getString(3);
String mgr = rs.getString(4);
String hiredate = rs.getString(5);
String sal = rs.getString(6);
String comm = rs.getString(7);
String depno = rs.getString(8);
// °á°ú¸¦ Ãâ·ÂÇÑ´Ù.
System.out.println (
empno + " : " + ename + " : " + job + " : " + mgr
+ " : " + hiredate + " : " + sal + " : " + comm + " : "
+ depno);
}
// ResultSet¸¦ ´Ý´Â´Ù.
rs.close();
// Statement¸¦ ´Ý´Â´Ù.
stmt.close();
// Connection¸¦ ´Ý´Â´Ù.
conn.close();
} catch ( Exception e ) {
e.printStackTrace();
}
}// main()ÀÇ ³¡
}// Ŭ·¡½ºÀÇ ³¡
ÄÄÆÄÀÏÇÏ°í ½ÇÇà½ÃŲ °á°ú ´ÙÀ½ÀÇ °á°ú°¡ ³ª¿À¸é JDBC ÇÁ·Î±×·¡¹Ö Áغñ ¿Ï·á°¡ µÈ °Ì´Ï´Ù.
C:\jdbc>javac GetEmp.java C:\jdbc>java GetEmp 7369 : SMITH : CLERK : 7902 : 1980-12-17 00:00:00.0 : 800 : null : 20 7499 : ALLEN : SALESMAN : 7698 : 1981-02-20 00:00:00.0 : 1600 : 300 : 30 7521 : WARD : SALESMAN : 7698 : 1981-02-22 00:00:00.0 : 1250 : 500 : 30 7566 : JONES : MANAGER : 7839 : 1981-04-02 00:00:00.0 : 2975 : null : 20 7654 : MARTIN : SALESMAN : 7698 : 1981-09-28 00:00:00.0 : 1250 : 1400 : 30 7698 : BLAKE : MANAGER : 7839 : 1981-05-01 00:00:00.0 : 2850 : null : 30 7782 : CLARK : MANAGER : 7839 : 1981-06-09 00:00:00.0 : 2450 : null : 10 7788 : SCOTT : ANALYST : 7566 : 1987-04-19 00:00:00.0 : 3000 : null : 20 7839 : KING : PRESIDENT : null : 1981-11-17 00:00:00.0 : 5000 : null : 10 7844 : TURNER : SALESMAN : 7698 : 1981-09-08 00:00:00.0 : 1500 : 0 : 30 7876 : ADAMS : CLERK : 7788 : 1987-05-23 00:00:00.0 : 1100 : null : 20 7900 : JAMES : CLERK : 7698 : 1981-12-03 00:00:00.0 : 950 : null : 30 7902 : FORD : ANALYST : 7566 : 1981-12-03 00:00:00.0 : 3000 : null : 20 7934 : MILLER : CLERK : 7782 : 1982-01-23 00:00:00.0 : 1300 : null : 10
String DB_URL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl"
jdbc:oracle:thin Àº »ç¿ëÇÏ´Â µå¶óÀ̹ö°¡ ¿À¶óŬ thin ŸÀÔÀÇ µå¶óÀ̹ö¶ó´Â ÀǹÌÀÔ´Ï´Ù.
1521 Àº ¼ºñ½º¸¦ Çϰí ÀÖ´Â ¿À¶óŬ ¸®½¼³Ê(listener)ÀÇ Æ÷Æ®¹øÈ£ÀÔ´Ï´Ù.
(listener ´Â ¿À¶óŬ¿¡¼ ¿À¶óŬ°ú ¿ÜºÎ ¾ÖÇø®ÄÉÀ̼ǰúÀÇ Åë½Å ¿ªÈ°À» ÇÕ´Ï´Ù.)
127.0.0.1 Àº µ¥ÀÌÅͺ£À̽º°¡ ¼³Ä¡µÇ¾î ÀÖ´Â ¼¹öÀÇ IP ÀÔ´Ï´Ù.
orcl Àº SID ÀÔ´Ï´Ù. ¿À¶óŬ ¼³Ä¡ ¶§¿¡ Àü¿ª µ¥ÀÌÅͺ£À̽º À̸§ À¸·Î ÀÔ·ÂÇÑ °ªÀÔ´Ï´Ù.
(Àü¿ª µ¥ÀÌÅͺ£À̽º À̸§ÀÌ SID°¡ ¾Æ´Õ´Ï´Ù. ¿À¶óŬ ¼³Ä¡½Ã¿¡ Àü¿ª µ¥ÀÌÅͺ£À̽º À̸§À¸·Î orcl À» ÀÔ·ÂÇß´Ù¸é, Àü¿ª µ¥ÀÌÅͺ£À̽º À̸§ Àº orcl ÀÌ µÇ´Â °ÍÀº ¹°·ÐÀ̰í SID °¡ orcl ÀÎ µ¥ÀÌÅͺ£À̽º°¡ µðÆúÆ®·Î »ý¼ºµË´Ï´Ù.)
´ÙÀ½Àº JDBC Å×½ºÆ® ÆÄÀÏ GetEmp.java ¸¦ ½ÇÇàÇÒ ¶§ ¹ß»ýÇÒ ¼ö ÀÖ´Â ¿¡·¯¿Í ±× ÇØ°á¹æ¾ÈÀÔ´Ï´Ù.
- Exception in thread "main" java.lang.NoClassDefFoundError: GetEmp
- CLASSPATH ¿¡ ÇöÀç µð·ºÅ丮¸¦ ÀǹÌÇÏ´Â . ¸¦ Ãß°¡ÇÏÁö ¾ÊÀº °æ¿ìÀÔ´Ï´Ù.
- java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
- ¿À¶óŬ JDBC µå¶óÀ̹ö¸¦ CLASSPATH ¿¡ À߸ø Ãß°¡ÇÑ °æ¿ìÀÔ´Ï´Ù.
- java.sql.SQLException: IO ¿¹¿Ü »óȲ: The Network Adapter could not establish the connection
- ¿À¶óŬÀÇ ¸®½¼³Ê(listener)°¡ ¼ºñ½º¸¦ Çϰí ÀÖÁö ¾ÊÀ» °¡´É¼ºÀÌ ¸¹½À´Ï´Ù.
- ¸í·É ÇÁ·ÒÇÁÆ®¿¡¼ lsnrctl status ·Î ¸®½¼³ÊÀÇ ¼ºñ½º »óŸ¦ È®ÀÎÇϼ¼¿ä.
- ¸®½¼³Ê°¡ µ¿ÀÛÇϰí ÀÖ´Ù¸é ¼¹öÀÇ IP ¸¦ 127.0.0.1 ¿¡¼ loopback adapter ¸¦ ¼³Ä¡ÇÒ ¶§ ¼³Á¤ÇÑ 10.10.10.10 À¸·Î ¹Ù²Ù°í ½ÃµµÇØ º¾´Ï´Ù
- java.sql.SQLException: ORA-01017: invalid username/password; logon denied
- scott °èÁ¤ÀÇ ºñ¹Ð¹øÈ£°¡ Ʋ¸° °æ¿ìÀÔ´Ï´Ù.
- ´ÙÀ½ °Á : JDBC ÇÁ·Î±×·¡¹Ö ¹æ¹ý
- ÀÌÀü °Á : ¿À¶óŬ ¼³Ä¡
