1. PreparedStatement
PreparedStatement VS Statement
똑같은 쿼리문에 값만 바꿔서 반복적으로 해야 되는 경우 : PreparedStatement
다른 쿼리문을 번갈아가면서 써야하는 경우 : Statement
2. 트랜젝션 (Transaction )
Atomicity(원자성) : 실행이 될거면 다 되던가 아예 안되던가 (쿼리문 2개 이상 실행시)
Consistency(지속성) : 처리중일때 항상 일관된 데이터를 처리할 수 있어야 한다.
Isolation(독립성) : 다른 트랜젝션과 별개로 하나의 트렌젝션은 독립적으로 처리되어야 한
Durability(내구성) : 트랜젝션이 처리된 이후에는 계속 존재해야 한다.
package tran;
import java.sql.*;
import conn.*;
public class TestTran {
public static void main(String[] args) {
new TestTran().execute();
}
public void execute() {
Connection conn = null;
Statement stmt = null;
try {
conn = MyConn.getConnection();
// 자동커밋불가로 변경
conn.setAutoCommit(false);
stmt = conn.createStatement();
stmt.execute("insert into dept values(11, '11', '11')");
stmt.execute("update dept set dname='22' where deptno=11");
conn.commit(); // close() 할 때 자동 commit되지만 오류 발생할 수 있으므로 반드시 명시한다.
} catch (SQLException e) {
e.printStackTrace();
// 예외가 발생했을때 되돌린다.
try { conn.rollback(); }
catch (SQLException e1) { e1.printStackTrace(); }
} finally {
try { if(stmt != null) stmt.close(); }
catch (SQLException e) { e.printStackTrace(); }
try { if(conn != null) conn.close(); }
catch (SQLException e) { e.printStackTrace(); }
}
}
}
3. ResultSetMetaData
: ResultSet에 대한 상세 정보를 가진다.
package rsmd;
import java.sql.*;
import conn.*;
public class TestRsmd {
public static void main(String[] args) {
new TestRsmd().execute();
}
public void execute() {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = MyConn.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from emp");
// ResultSetMetaData : ResultSet에 대한 상세 정보
ResultSetMetaData rsmd = rs.getMetaData();
int count = rsmd.getColumnCount();
System.out.println(count);
for (int i=1; i < count+1; i++) {
// 컬럼의 별칭을 가져온다.(별칭 없으면 원래 이름)
String label = rsmd.getColumnLabel(i);
String name = rsmd.getColumnName(i);
System.out.print(label+" ");
// System.out.print(name+" ");
}
System.out.println();
while (rs.next()) {
for (int i = 1; i <=count; i++) {
System.out.print(rs.getString(i) + " ");
}
System.out.println();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try { if(rs != null) rs.close(); }
catch(SQLException e) { e.printStackTrace(); }
try { if(stmt != null) stmt.close(); }
catch(SQLException e) { e.printStackTrace(); }
try { if(conn != null) conn.close(); }
catch(SQLException e) { e.printStackTrace(); }
}
}
}
'Dev. 640시간 뭉개기 > 강의내용정리' 카테고리의 다른 글
[WEB] 31일차 - 톰캣설치, HTML(기초태그, 목록태그, 테이블태그) (0) | 2012.09.09 |
---|---|
[자바] 30일차 - PL/SQL 의 기초, 자바 JDBC 연동 (0) | 2012.09.06 |
[자바] 28일차 - JDBC (Java Database Connectivity) (0) | 2012.09.05 |
[자바] 27일차 - 쓰레드(Thread), JDBC (0) | 2012.09.03 |
[자바] 26일차 - 자바 기초 정리(해쉬셋HashSet, 로또번호 생성/비교 프로그램) (0) | 2012.09.01 |