JDBC 3편 - CRUD 작성

Dev StoryTeller·2020년 12월 6일
0

이번에는 정말 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;

1. Select

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);
}

2. Insert

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)이 정수형으로, 몇개의 열이 적용되었는지 반환하는 것이 특징이다.


3. Update

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();

4. Delete

역시 마찬가지.

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();

5. 결론

드디어 길고 긴 JDBC 기본이 끝났다!
다음 편에서는 Spring에선 어떻게 JDBC를 사용하는지 알아보도록 하겠다.

profile
개발을 이야기하는 개발자입니다.

0개의 댓글