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);のオプションは、
たぶんレコード(テーブル?)ロックを掛けないと思うので高負荷時には有効だと思う。