try {
Class.forName("oracle.jdbc.OracleDriver");
System.out.println(">> 드라이버 로딩 성공");
} catch (ClassNotFoundException e) {
System.out.println("[예외] 드라이버 로딩 실패");
e.printStackTrace();
}
Connection conn = null;
try {
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:xe",
"mystudy","pw");
System.out.println(">>DB연결성공");
} catch (SQLException e) {
System.out.println("[예외]DB 연결 실패");
e.printStackTrace();
}
Statement stmt = null;
ResultSet rs = null;
try {
//Connection객체로부터 Statement 객체 생성
stmt = conn.createStatement();
String sql = ""
+ "SELECT ID, NAME, KOR, ENG, MATH, TOT, AVG "
+ " FROM STUDENT "
+ " ORDER BY ID";
rs = stmt.executeQuery(sql);
System.out.println(">>SQL 실행 성공" + rs);
} catch (SQLException e) {
System.out.println("[예외]SQL 실행 실패" + e.getMessage());
e.printStackTrace();
}
System.out.println(">>SELECT 결과에 대한 처리");
try {
while(rs.next()) {
System.out.print(rs.getString("ID") + "\t");
System.out.print(rs.getString("NAME") + "\t");
System.out.print(rs.getInt("KOR") + "\t");
System.out.print(rs.getInt("ENG") + "\t");
System.out.print(rs.getInt("MATH") + "\t");
System.out.print(rs.getInt("TOT") + "\t");
System.out.print(rs.getDouble("AVG"));
System.out.println();
}
} catch (SQLException e) {
e.printStackTrace();
}
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();
}
위 과정을 하나의 try~catch문으로 정리한 코드
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
//1. jdbc 드라이버 로딩
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println(">> 드라이버 로딩 성공");
//2. db연결
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:xe",
"mystudy","pw");
System.out.println(">>DB연결성공");
//3. Statement문 실행 (SQL문 실행)
//Connection객체로부터 Statement 객체 생성
stmt = conn.createStatement();
String sql = ""
+ "SELECT ID, NAME, KOR, ENG, MATH, TOT, AVG "
+ " FROM STUDENT "
+ " ORDER BY ID";
rs = stmt.executeQuery(sql);
System.out.println(">>SQL 실행 성공" + rs);
//4. SQL 실행 결과에 대한 처리
System.out.println(">>SELECT 결과에 대한 처리");
while(rs.next()) {
String str = ""
+ rs.getString("ID") + "\t"
+ rs.getString("NAME") + "\t"
+ rs.getInt("KOR") + "\t"
+ rs.getInt("ENG") + "\t"
+ rs.getInt("MATH") + "\t"
+ rs.getInt("TOT") + "\t"
+ rs.getDouble("AVG") + "\t";
System.out.println(str);
}
} catch (ClassNotFoundException e) {
System.out.println("[예외] 드라이버 로딩 실패");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("[예외]SQL Exception" + e.getMessage());
e.printStackTrace();
} finally {
//5. 클로징 처리에 의한 자원 반납
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();
}
}
Connection conn = null;
Statement stmt = null;
try {
//1.
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:xe",
"mystudy","pw");
//3.
stmt = conn.createStatement();
String sql = "";
sql += "INSERT INTO STUDENT ";
sql += " (ID, NAME, KOR, ENG, MATH, TOT, AVG) ";
sql += " VALUES ('2024003', '김유신', 100, 100, 100, 0, 0) ";
System.out.println("sql: " + sql);
int result = stmt.executeUpdate(sql);
//4.
System.out.println("처리건수: " + result);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
//5.
try {
if(stmt != null) stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
SELECT와 같으나 3번 SQL문 실행 부분을 INSERT INTO로 작성함
//3.
stmt = conn.createStatement();
String sql = "";
sql += "INSERT INTO STUDENT ";
sql += " (ID, NAME, KOR, ENG, MATH, TOT, AVG) ";
sql += " VALUES ('2024003', '김유신', 100, 100, 100, 0, 0) ";
System.out.println("sql: " + sql);
int result = stmt.executeUpdate(sql);
//3.
stmt = conn.createStatement();
String sql = "";
sql += "UPDATE STUDENT ";
sql += "SET KOR = 10,";
sql += " ENG = 15,";
sql += " MATH = 25 ";
sql += "WHERE ID = '2024005' ";
System.out.println("sql: " + sql);
int result = stmt.executeUpdate(sql);
//3.
stmt = conn.createStatement();
String sql = "";
sql += "DELETE FROM STUDENT ";
sql += " WHERE ID = '2024005' ";
System.out.println("sql: " + sql);
int result = stmt.executeUpdate(sql);
JAVA에서 데이터를 조작했을 때 결과가 처리되지 않는 경우: SQL에서 데이터를 조작하고 COMMIT 또는 ROLLBACK을 하지 않아 LOCK이 걸림, SQL에서 COMMIT, ROLLBACK을 실행하면 JAVA에서 정상적으로 처리됨을 확인할 수 있었음 / JAVA에서는 AUTOCOMMIT 됨