지금까지 JDBC를 배우며 SELECT
, INSERT
를 확인해봤다.
앞에는 단순히 쿼리를 입력하고 결과를 DB에서 확인하는 했지만, 이번엔 JDBC를 통해 데이터베이스를 조회하는 것을 해보려고 한다.
JDBC를 통해 DB를 조회하기 위해서 select 쿼리를 사용하면서 그 결과값을 ResultSet
타입으로 입력받아, 데이터를 메서드로 추출하는 과정을 진행해본다.
public void selectTable(String tbName) throws SQLException {
String sql = "select * from " + tbName;
Connection conn = ConnectionManager.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
int no = 0;
String name = "";
String manufacturing = "";
int price = 0;
while (rs.next()) {
no = rs.getInt(1);
name = rs.getString(2);
manufacturing = rs.getString(3);
price = rs.getInt(4);
System.out.println("No : " + no + " / " + "name : " + name + " / " + "manufacturing : " + manufacturing
+ " / " + "price : " + price);
}
rs.close();
pstmt.close();
conn.close();
}
/* 결과값
Connected...
No : 1 / name : Iphone 13 / manufacturing : Apple / price : 720
DB 출력 성공
*/
앞에서 preparestatement
를 사용할 때는 쿼리의 value
값에 ?(바인드 변수)
를 사용했지만 테이블에서는 사용할 수 없다.
- 바인드 변수는 컬럼의 값을 대체
- 바인드 변수는 테이블의 값에는 사용 불가
따라서, "select * from " + tbName;
과 같이 문자열 결합 형으로 사용해야 한다.
그리고 쿼리의 결과값(불러온 테이블)은 ResultSet
변수 rs
에 저장된다. 여기서 rs에 저장되는 단위는 레코드(한 행)
단위로 저장되기 때문에 불러올때도 next()
를 사용해 한 행씩 불러온다.
마지막에 Get자료형
에서 매개변수에 컬럼의 순서를 넣어줬지만 이름을 넣어줄 수도 있다.
no = rs.getInt(1);
name = rs.getString(2);
manufacturing = rs.getString(3);
price = rs.getInt(4);
////////////////////////////////////
no = rs.getInt("no");
name = rs.getString("name");
manufacturing = rs.getString("manufacturing");
price = rs.getInt("price");
// 위 두 코드의 결과값은 같다.