JSP DBのSelect

DBでinsert例を書いてきましたので、Selectする方法です。
update、deleteはinsertと同じなので特に書きません。


以下コードです。(一部省略)

<table><%
request.setCharacterEncoding("utf-8");
Connection conn = null;
CallableStatement cs = null;
PreparedStatement stmt = null;
ResultSet rs = null;
String url = "jdbc:mysql://localhost/dbName?characterEncoding=UTF-8";
String dbUser = "dbUser";
String dbPass = "dbPass";


int cnt=0;
String col1 = "";
String col2 = "";
String col3 = "";
String col4 = "";
try{
 Class.forName("com.mysql.jdbc.Driver").newInstance();
 conn = DriverManager.getConnection(url, dbUser, dbPass);
 conn.setReadOnly(true);


 String sql="select * from table where jyoken = ?";
 stmt = conn.prepareStatement(sql);
 stmt.setString(1,jyoken);
 rs = stmt.executeQuery();


 while(rs.next()){
  cnt++;
  col1 = rs.getInteger("col1");
  col2 = rs.getString("col2");
  col3 = rs.getString("col3");
  col4 = rs.getString("col4");
  out.println("<tr>");
  out.println("<td>"+col1+"</td>");
  out.println("<td>"+col2+"</td>");
  out.println("<td>"+col3+"</td>");
  out.println("<td>"+col4+"</td>");
  out.println("</tr>");
 }


 stmt.close();
 rs.close();


}catch(Exception e){
}finally{
 if(rs!=null){rs.close();}
 if(stmt!=null){stmt.close();}
 if(conn!=null){conn.close();}
}
%>
</table><%=cnt%>件表示しました。

insertとほとんど同じで、Selectのコツは、
受取はResultSetであること。
while(rs.next())で回して1レコードづつ取得すること。
取得時はgetStringなどDBカラムの型に合わせて取得すること。
conn.setReadOnly(true);のオプションは、
たぶんレコード(テーブル?)ロックを掛けないと思うので高負荷時には有効だと思う。