728x90
JDBC용 객체
- Connection: DB의 연결정보를 담고 있는 객체
- (Prepared)Statement: 해당 DB에 SQL문을 전달하고 실행한 후 결과를 받아내는 객체
- ResultSet: 만일 실행한 SQL문이 SELECT문일 경우 조회된 결과들이 담겨있는 객체
728x90
JDBC 처리 순서
1) JDBC Driver 등록: 해당 DBMS가 제공하는 클래스 등록
2) Connection 생성: 접속하고자하는 DB정보를 인력해서 DB에 접속하면서 생성
3) Statement 생성: Connection 객체를 이용해서 생성
4) SQL문 전달하면서 실행: Statement 객체를 이용해서 SQL문 실행
SELECT문일 경우 - executeQuery 메소드 이용
DML문일 경우 - executeUpdate 메소드 이용
5) SELECT문일 경우 - ResultSet 객체(조회된 데이터들이 담겨있음)로 받기 => 6_1
DML문일 경우 - int(처리된 행 수)fh qkerl => 6_2
6)
6_1) Result에 담겨있는 데이터들을 하나씩 뽑아서 VO객체에 담기
6_2) 트랜잭션 처리(성공이면 COMMIT, 실패면 ROLLBACK)
7) 다 쓴 JDBC용 객체들은 반드시 자원반납(close) => 생성된 역순으로
8) 결과반환(Controller)
> SELECT문일 경우 - 6_1) 만들어진 결과
> DML문일 경우 - int(처리된 행 수)
public static void main(String[] args) {
/*
// 사용자에게 값을 입력받아 DBMS로 전달
Scanner sc = new Scanner(System.in);
System.out.print("번호 : ");
int num = sc.nextInt();
sc.nextLine();
System.out.print("이름 : ");
String name = sc.nextLine();
// 필요한 변수들 먼저 세팅
// 1단계 끝
int result = 0;
Connection conn = null;
Statement stmt = null;
// 2단계
// 실행 SQL("완성형태"로 만들기)
// 맨 뒤에 세미콜론은 절대 붙이면 안됨
// String sql = "INSERTINTO TEST VALUES(3, '이민역', SYSDATE)";
String sql = "INSERT INTO TEST VALUES("+ num + ", '" + name + "', SYSDATE)";
try {
// 1) JDBC driver 등록
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("driver 등록 성공");
// 2) Connection 객체 생성
// DB에 연결 (url, 계정명, 비밀번호)
conn = DriverManager.getConnection("JDBC:oracle:thin:@localhost:1521:xe","JDBC","JDBC");
System.out.println("Connection 객체 생성!");
// 3) Statement 객체 생성
stmt = conn.createStatement();
System.out.println("Statement 객체 생성!");
// 4) SQL 쿼리 날려서 실행 후 결과받기 ( 처리된 행 수 )
result = stmt.executeUpdate(sql);
// 내가 실행할 SQL문이 DML문(INSERT, UPDATE, DELETE) 일 경우
// => stmt.executeUpdate("DML문") : int
// 내가 실행할 SQL문이 SELECT문인 경우
// => stmt.executeQuery("SELECT") : resultSet
// 5) 트랜잭션 처리
if(result > 0) { // 성공했을 경우 commit
conn.commit();
}else { // 아닐 경우 rollback
conn.rollback();
}
} catch (ClassNotFoundException e) {
System.out.println("드라이버 오타");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("커넥션 객체 확인하기");
e.printStackTrace();
} finally {
try {
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(result > 0) {
System.out.println("insert 성공");
}else {
System.out.println("insert 실패");
}
*/
// 2. 내 pc DBMS상 JDBC계정에 TEST테이블 모든 데이터 조회해보기
// SELECT문
// => ResultSet(조회된 데이터들 담겨있음) 받기
// => ResultSet으로부터 데이터 뽑기
// 필요한 변수들 셋팅
Connection conn = null;
Statement stmt = null;
ResultSet rset = null; // SELECT문 실행된 조회 결과값들이 처음 담길 객체
String sql = "SELECT * FROM TEST" ;
try {
// 1) JDBC Driver 등록
Class.forName("oracle.jdbc.driver.OracleDriver");
// 2) Connection 객체 생성
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","JDBC","JDBC");
// 3) Statement 객체 생성
stmt = conn.createStatement();
// 4) SQL문 전달해서 실행 후 결과받기(ResultSet 객체)
rset = stmt.executeQuery(sql);
// 5)
while(rset.next()) {
// 커서를 움직여주는 역할
// 해당 행이 있으면 true, 없으면 false
int tNo = rset.getInt("TNO");
String tName = rset.getString("TNAME");
Date tDate = rset.getDate("TDATE");
System.out.println(tNo + ", " + tName + "," + tDate);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rset.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
728x90
'Programming > JAVA' 카테고리의 다른 글
JDBCTemplate (0) | 2024.01.13 |
---|---|
JDBC Statement 처리순서 (1) | 2024.01.13 |
MVC 패턴 / ojdbc6.jar / Statement 와 PreparedStatement / ClassNotFoundException (0) | 2024.01.13 |
[JAVA] BufferedReader / BufferedWriter / try ~ with ~ resource / FileOuputStream / ObjectOutPutStream (0) | 2024.01.12 |
[JAVA] IO(Input & Output, 입출력) / 스트림(Stream) (0) | 2024.01.12 |