executeUpdate
: INSERT, UPDATE, DELETE => int 리턴executeQuery
: SELECT => ResultSet 리턴 (셀렉트문 결과 담는 객체)
ResultSet
- SELECT문의 결과를 담고있는 객체
(Statement
객체의executeQuery()
의 리턴값)- 사용 후 close() 필수!!!!!!
- 참고
- 주요 메서드
next()
: return boolean
get자료형(String columnLabel)
: return 자료형
get자료형(int columnIndex)
: return 자료형
last()
: cursor를 마지막 row로 변경
beforeFirst()
: cursor를 0번째 row(?)로 변경
getRow()
: 현재 커서가 위치한 row 번호를 반환. return int
package kr.ac.green.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import kr.ac.green.Book;
/*
* JDBC (Java Database Connectivity)
*
* 1. 드라이버 로드 (1번만 수행)
* 2. 연결
* 3. 질의
* 4. 자원해제
*/
public class BookDAO {
private static final BookDAO INSTANCE = new BookDAO();
private BookDAO() {
// 1. 드라이버 로드
try {
Class.forName("com.mysql.jdbc.Driver");
// oracle의 드라이버 클래스 위치 : "oracle.jdbc.driver.OracleDriver"
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static BookDAO getInstance() {
return INSTANCE;
}
public Connection connect() {
Connection con = null;
try {
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "1234");
// mysql의 url 형식 : "jdbc:mysql://localhost:3306/test";
// oracle의 url 형식 : "jdbc:oracle:thin:@localhost:1521:orcl"
} catch(SQLException e) {
e.printStackTrace();
}
return con;
}
public void disconnect(Connection con) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public int insertBook(Connection con, Book book) {
int result = 0;
Statement stmt = null;
// Statement도 (HttpSevletRequest, HttpServletResponse와 마찬가지로) interface
// 이전에 WAS가 그랬듯 DBMS에서 만들어줌
try {
/*
* executeUpdate : INSERT, UPDATE, DELETE => int 리턴
* executeQuery : SELECT => ResultSet 리턴
*/
stmt = con.createStatement(); // Connection 개체에서 Statement 생성
String sql = "INSERT INTO book (b_title, b_writer, b_password, b_price, b_publisher, b_comment VALUES ('%s', '%s', '%s', '%d', '%s', '%s')";
sql = String.format(sql, book.getTitle(), book.getWriter(), book.getPassword(), book.getPrice(), book.getPublisher(), book.getComment());
result = stmt.executeUpdate(sql);
} catch(SQLException e) {
e.printStackTrace();
} finally {
if(stmt != null) {
try {
// 자원해제 (반드시 해주기!!!!!!!!!!!!!!!!!)
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return result;
}
}
트랜잭션(Transaction)
참고
Assert.assertEquals()
Assert.assertArrayEquals()
Assert.assertNotEquals()
Assert.assertNotNull()
Assert.assertTrue()
rowMapping()
: (셀렉트문 결과인) 한 줄을 객체로 반환하는 메서드
spring에서 사용하는 방법