JDBC란 자바를 이용하여 데이터베이스에 접근하여 각종 SQL문을 수행할 수 있도록 제공하는 API를 말한다.
1 단계 : 드라이버를 로드 한다.
2 단계 : Connection 객체를 생성한다.
3 단계 : Statement 객체를 생성한다.
4 단계 : SQL문에 결과물이 있다면 ResultSet 객체를 생성한다.
5 단계 : 모든 객체를 닫는다.
데이터베이스와 어플리케이션을 연결하는 객체
DriverManager는 사용할 애플리케이션에 대해 사용 가능한 JDBC(Java Database Connectivity) 드라이버 세트를 관리한다
Connection을 생성하는 역할
SQL Server에서 경고 또는 오류를 반환할 때 throw되는 예외
각각의 인수에대해 위치홀더을 사용하여 SQL문장을 정의할 수 있다
위치홀더는 물음표 '?'로 표현
SELECT문을 사용하여 얻어온 래코드 값들을 테이블의 형태로 갖는 객체
package kr.s03.preparedstatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DBUtil {
private static final String db_driver = "oracle.jdbc.OracleDriver";
private static final String db_url = "jdbc:oracle:thin:@192.168.219.102:1521:xe";
private static final String db_id = "c##user01";
private static final String db_password = "1234";
//Connection 객체 생성 및 반환
public static Connection getConnection()
throws ClassNotFoundException, SQLException {
//JDBC 수행 1단계 : 드라이버 로드
Class.forName(db_driver);
//JDBC 수행 2단계 : Connection 객체 생성
return DriverManager.getConnection(db_url,db_id,db_password);
}
public static void executeClose(ResultSet rs, PreparedStatement pstmt, Connection conn) {
if(rs!=null)try {rs.close();}catch(SQLException e) {}
if(pstmt!=null)try {pstmt.close();}catch(SQLException e) {}
if(conn!=null)try {conn.close();}catch(SQLException e) {}
}
}
Connection 객체가 생성되었습니다
package kr.s03.preparedstatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
public class InsertMain {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt =null;
String sql = null;
try {
//JDBC 수행 1,2단계
conn = DBUtil.getConnection();
//SQL문 작성
sql = "INSERT INTO test1 (id,age) VALUES (?,?)";
//JDBC 수행 3단계 : PreparedStatment 객체 생성
pstmt = conn.prepareStatement(sql);
//?에 데이터를 바인딩
pstmt.setString(1,"star"); //1번 ?에 데이터 전달
pstmt.setInt(2, 50); //2번 ?에 데이터 전달
int count = pstmt.executeUpdate();
//JDBC 수행 4단계 : SQL문을 실행해서 테이블에 행을 추가
System.out.println(count +"개 행을 추가했습니다.");
}catch(Exception e) {
e.printStackTrace();
}finally {
//자원정리
DBUtil.executeClose(null, pstmt, conn);
}
}
}
0개 행을 수정했습니다.
package kr.s03.preparedstatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
public class DeleteMain {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt =null;
String sql =null;
try {
//JDBC수행 1,2단계
conn=DBUtil.getConnection();
//SQL문 작성
sql = "DELETE FROM test1 WHERE id=?";
//JDBC수행 3단계
pstmt = conn.prepareStatement(sql);
//?에 데이터 바인딩
pstmt.setString(1,"star");
//JDBC수행 4단계 SQL문을 실행해서 테이블의 행을 삭제
int count = pstmt.executeUpdate();
System.out.println(count + "개 행을 삭제했습니다.");
}catch(Exception e) {
e.printStackTrace();
}finally {
//자원정리
DBUtil.executeClose(null, pstmt, conn);
}
}
}
0개 행을 삭제했습니다.
package kr.s03.preparedstatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class SelectMain {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = null;
try {
//JDBC 수행 1, 2단계
conn = DBUtil.getConnection();
//SQL문 작성
sql = "SELECT * FROM test1";
//JDBC 수행 3단계: preparedStatment 객체 생성
pstmt = conn.prepareStatement(sql);
//JDBC 수행 4단계 : SQL문을 실행해서 테이블로 부터 결과행들을
// 읽어들여 ResultSet에 담아서 반환
rs = pstmt.executeQuery();
System.out.println("ID\t나이");
while(rs.next()) {
System.out.print(rs.getString("id"));
System.out.print("\t");
System.out.print(rs.getInt("age"));
System.out.print("\n");
}
}catch(Exception e) {
e.printStackTrace();
}finally {
//자원정리
DBUtil.executeClose(rs, pstmt, conn);
}
}
}
ID 나이
blue 40
he's 50
sky 50
she's 50
package kr.s03.preparedstatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
public class UpdateMain {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt =null;
String sql = null;
try {
//JDBC 수행 1,2단계
conn = DBUtil.getConnection();
//SQL문 작성
sql = "UPDATE test1 SET age=? WHERE id=?";
//JDBC 수행 3단계 : PreparedStatment 객체 생성
pstmt = conn.prepareStatement(sql);
//?에 데이터를 바인딩
pstmt.setInt(1, 19); //1번 ?에 데이터 전달
pstmt.setString(2,"star"); //2번 ?에 데이터 전달
int count = pstmt.executeUpdate();
//JDBC 수행 4단계 : SQL문을 실행해서 테이블에 행을 수정
System.out.println(count +"개 행을 수정했습니다.");
}catch(Exception e) {
e.printStackTrace();
}finally {
//자원정리
DBUtil.executeClose(null, pstmt, conn);
}
}
}
0개 행을 수정했습니다.