2013년 7월 4일 목요일

(130704) 9일차 (JDBC를 이용한 DB 연동 - Select, Insert)

 - Type 4 JDBC Driver : Database 서버와 Java를 직접 연결
 : Client에 설치되어 사용된다.
 : DBMS의 Native protocol을 이용해 DBMS에 직접 연결된다.
 : 가장 성능이 좋다.

 - ojdbc14C:\java\jdk1.7.0_25\jre\lib\ext에 넣어줘야 한다.
 - 연동이 안될 경우






























 - JDBC를 이용한 DB 연동

 1. JDBC Driver Load : Class 클래스의 forName 메소드 이용. forName메소드에게 드라이버의 이름을 인수로 넣어준다.
 2. Connection 생성 : DriverManager 클래스 (java.sql패키지안 클래스에) 의 getConnection 메소드 이용
 3. Statement 객체 생성 : Connection 객체 (java.sql패키지안interface에) 의 createStatement 메소드 이용
 4. SQL실행 : 3번에서 생성된 Statement 객체 이용. Select문 실행. Statement 객체(java.sql패키지안interface에)의 executeQuery 메소드 이용 - Sql 실행결과를 ResultSet 객체로 리턴
 5. Insert Update Delete 문 실행 : Statement 객체의 executeUpdate 메소드 이용 


 - JdbcTest.java 소스 (접속 확인)
import java.sql.Connection;
import java.sql.DriverManager;

public class JdbcTest {

public static void main(String[] args) {
String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
String id = "system";
String pass = "123456";
Connection con;
try {
// 어느 데이터베이스를 사용할 것인지를 설정
Class.forName("oracle.jdbc.driver.OracleDriver"); // 대소문자 구문
// 실제 데이터 베이스에 접근하기 위한 소스를 작성 == 접속완료되면 커넥션을 리턴
con = DriverManager.getConnection(url, id, pass);
System.out.println("오라클에 접속 완료");
} catch (Exception e) {
e.printStackTrace();
}
}


 - 결과




 - JdbcTest.java 소스 (접속 및 쿼리 연동 - Select)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class JdbcTest {

public static void main(String[] args) {
String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
String id = "system";
String pass = "123456";
Connection con;
PreparedStatement pstmt;
ResultSet rs;
try {
// 1. 어느 데이터베이스를 사용할 것인지를 설정
Class.forName("oracle.jdbc.driver.OracleDriver"); // 대소문자 구문
// 2. 실제 데이터 베이스에 접근하기 위한 소스를 작성 == 접속완료되면 커넥션을 리턴
con = DriverManager.getConnection(url, id, pass);
System.out.println("오라클에 접속 완료");
// 모든 데이터를 가져오시오
String sql = "select * from member";
// 3. 쿼리를 날리기위한 객체를 선언
pstmt = con.prepareStatement(sql);
// 4. 쿼리실행 = 데이터를 돌려 받을때
rs = pstmt.executeQuery();
// 반복문을 만듬
while(rs.next()){
System.out.print(rs.getString(1) + " "); // ID
System.out.print(rs.getString(2) + " "); // PASS
System.out.print(rs.getString(3) + " "); // NAME
System.out.print(rs.getInt(4) + " "); // GENDER
System.out.print(rs.getString(5) + " "); // HOBBY
System.out.print(rs.getString(6) + " "); // PHONE
System.out.print(rs.getString(7) + " "); // INTRODUCE
System.out.println();
}
// 5. 다 썻으면 자원을 닫아라
rs.close();
pstmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}


 - 커밋 (커밋을 수행해야 Java에서 출력이 됨)


 - 결과





 - JdbcTest.java 소스 (Insert)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class JdbcTest {

public static void main(String[] args) {
String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
String id = "system";
String pass = "123456";
Connection con;
PreparedStatement pstmt;
ResultSet rs;
try {
// 1. 어느 데이터베이스를 사용할 것인지를 설정
Class.forName("oracle.jdbc.driver.OracleDriver"); // 대소문자 구문
// 2. 실제 데이터 베이스에 접근하기 위한 소스를 작성 == 접속완료되면 커넥션을 리턴
con = DriverManager.getConnection(url, id, pass);
System.out.println("오라클에 접속 완료");
// 모든 데이터를 가져오시오
String sql = "insert into member values(?, ?, ?, ?, ?, ?, ?)";
// 3. 쿼리를 날리기위한 객체를 선언
pstmt = con.prepareStatement(sql);
// ?에 데이터를 입력
pstmt.setString(1, "abcde");
pstmt.setString(2, "11111");
pstmt.setString(3, "김홍관");
pstmt.setString(4, "1");
pstmt.setString(5, "hiking");
pstmt.setString(6, "010-9999-8888");
pstmt.setString(7, "Hello World!");
// 4. 쿼리실행 = 데이터를 돌려 받을때
pstmt.executeUpdate();
// 5. 다 썻으면 자원을 닫아라
pstmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}


 - 결과