ecsimsw
JDBC / sql 쿼리 적용 / PreparedStatement 본문
PreparedStatement
PreparedStatement를 사용하면, 미리 정해둔 sql 틀 안에 인자만 달리해서 마치 함수처럼 쿼리문을 재사용할 수 있다.
또 캐시의 적용으로 동일한 쿼리를 반복해서 사용할 때, Statement 보다 빠른 성능을 보인다. ( 단일 사용의 경우 Statement가 빠르다. )
사용 방법
PreparedStatement pstat = conn.prepareStatement(sql);
pstat.setString(parameterIndex, value);
pstat.executeUpdate();
rs = pstat.executeQuery();
사용 예시
try{
Class.forName("com.mysql.jdbc.Driver");
String url ="jdbc:mysql://localhost:3306/hellojdbc?serverTimezone=UTC";
conn = DriverManager.getConnection(url, "root", "root");
System.out.println("연결 성공");
Statement stat=conn.createStatement();
String sql = "insert into logininfo (id, pw) values (?,?)";
PreparedStatement pstat = conn.prepareStatement(sql);
pstat.setString(1,"admin3");
pstat.setString(2,"admin4");
pstat.executeUpdate();
sql = "select * FROM logininfo WHERE id= (?)";
pstat = conn.prepareStatement(sql);
pstat.setString(1, "admin");
rs =pstat.executeQuery();
while(rs.next()) {
String id =rs.getString("id");
String pw =rs.getString("pw");
System.out.println(id+" "+pw);
}
rs.close();
}
catch(ClassNotFoundException e){
System.out.println(e+"드라이버 로딩 실패");
}
catch(SQLException e){
System.out.println("에러: " + e);
}
finally{
try{
if( conn != null && !conn.isClosed()){
conn.close();
}
}
catch( SQLException e){
e.printStackTrace();
}
}
'Database > SQL, JDBC' 카테고리의 다른 글
Connection pool / DBCP / JSP & mySql 커넥션 풀 (2) | 2020.05.19 |
---|---|
JDBC / DAO, DTO (0) | 2020.05.17 |
JDBC / sql 쿼리 적용 / Statement (0) | 2020.05.16 |
JDBC / ClassNotFoundException / SQLException: The server time zone value (0) | 2020.05.15 |
JDBC / 설치와 연결 / Connection (0) | 2020.05.15 |
Comments