이번에는 정말 CRUD에 대해 알아보자!
그리고 prepareStatement() 메서드가 있는데, 인자가 필요할 때 사용한다. Insert할 때 알아보도록 하자
일단 다음과 같은 User 클래스와 Connection을 미리 만들어 놓는다.
// User 클래스 작성
class User {
private int id;
private String name;
private String description;
/*
* getter/setter 메소드들
*/
}
// Connection 작성
public static Connection getConnection() throw Exception {
// 드라이버 로드
Class.forName("com.jdbc.cj.mysql.Driver");
// 데이터베이스 주소
String dburl = "jdbc:mysql://localhost:3306/mydb";
// 사용자 이름
String username = "root";
// 비밀번호
String password = "";
Connection conn = DriverManager.getConnection(dburl, username, password);
return conn;
SELECT를 이용할 때는 excuteQeury()를 사용하는 것이 좋다.
// 결과값을 담기위한 User 리스트
List<User> userList = new ArrayList<>();
// SELECT 구문 작성
String sql = "SELECT * from USER";
// 조회하기
Statement stat = conn.createStatement();
ResultSet rs = stat.excuteQuery(sql);
// 결과값 가져오기
while(rs.next()) {
// user 객체에 값 저장
user = new User();
user.setId(rs.getInt(1));
user.setName(rs.getString(2));
user.setDescription(rs.getString(3));
// 리스트에 추가
userList.add(user);
}
Insert, Update, Delete를 쓸 때는 excuteUpdate()를 사용한다.
그리고 Insert는 인자가 필요할 때엔 prepareStatement를 쓰는데,
ResultSet이 반환값을 담는 틀이라면,
prepareStatement은 미리 인자들을 담는 틀이다.
사용법은 다음과 같다.
// 넣을 User 객체 작성
User user = new User(1, "seculoper", "안녕하세요!");
// Insert 구문 작성
String sql = "INSERT INTO USER VALUES(?, ?, ?)";
// 미리 틀을 만듬
PrepareStatement ps = conn.prepareStatement(sql);
// 틀에다 인자를 넣음
ps.setInt(1, user.getId());
ps.setString(2, user.getName());
ps.setString(3, user.getDescription());
// 쿼리를 날림
ResultSet rs = ps.excuteUpdate();
SELECT와는 달리 결과값(rs)이 정수형으로, 몇개의 열이 적용되었는지 반환하는 것이 특징이다.
INSERT와 동일하다.
// 수정할 User 객체 작성
User user = new User(1, "seculoper", "반가워요!");
// Update 구문 작성
String sql = "UPDATE USER SET name=? WHERE Id = ?";
// 미리 틀을 만듬
PrepareStatement ps = conn.prepareStatement(sql);
// 틀에다 인자를 넣음
ps.setInt(1, user.getName());
ps.setString(2, user.getId());
// 쿼리를 날림
ResultSet rs = ps.excuteUpdate();
역시 마찬가지.
int user_id = 1;
// Delete 구문 작성
String sql = "DELETE * FROM USER WHERE Id = ?";
// 미리 틀을 만듬
PrepareStatement ps = conn.prepareStatement(sql);
// 틀에다 인자를 넣음
ps.setInt(1, user.user_id);
// 쿼리를 날림
ResultSet rs = ps.excuteUpdate();
드디어 길고 긴 JDBC 기본이 끝났다!
다음 편에서는 Spring에선 어떻게 JDBC를 사용하는지 알아보도록 하겠다.