データの取得

 この節では、SQL文の実行結果を操作する方法を見てみましょう。

○ ファイル

 データを表示するJSPファイルを作成します。プロジェクトに次のようなファイルを追加してください。

ファイル名 SelectTest.jsp

サンプルダウンロード

 

○ プログラム

 次のようにプログラムを入力してください。

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2.  pageEncoding="UTF-8"%>
  3. <%@ page import="java.sql.*" import="java.util.*" %>
  4. <%
  5. String message = null;
  6. Connection con = null;
  7. ArrayList<String[]> ary = null;
  8. try{
  9.  //JDBCドライバクラスの指定
  10.  String drivername = "com.mysql.jdbc.Driver";
  11.  //データベースを指定
  12.  String url = "jdbc:mysql://localhost:3306/books?characterEncoding=utf8";
  13.  //ユーザー名
  14.  String username = "root";
  15.  //パスワード
  16.  String password = "";
  17.  //指定したドライバクラスを読み込み
  18.  Class.forName(drivername);
  19.  //データベースに接続
  20.  con = DriverManager.getConnection(url, username, password);
  21.  //Statementオブジェクトを生成
  22.  Statement st = con.createStatement();
  23.  //SQL文を生成
  24.  String sql = "SELECT * FROM users";
  25.  //SQL文を実行
  26.  ResultSet rs = st.executeQuery(sql);
  27.  //結果を格納するArrayListオブジェクトを用意
  28.  ary = new ArrayList<String[]>();
  29.  //結果を取得する
  30.  while(rs.next()){
  31.   String[] data = new String[4];
  32.   data[0] = rs.getString("Id");
  33.   data[1] = rs.getString("UserName");
  34.   data[2] = rs.getString("Password");
  35.   data[3] = rs.getString("Name");
  36.   ary.add(data);
  37.  }
  38.  //ResutlSetオブジェクトを切断
  39.  rs.close();
  40. }catch(Exception e){
  41.  //エラーメッセージをセット
  42.  message = "データベースに接続できませんでした。";
  43. }finally{
  44.  try{
  45.   //データベースに接続されていれば切断する
  46.    if(con != null){
  47.     con.close();
  48.    }
  49.   }catch(Exception e){
  50.   message = "エラーが発生しました。";
  51.  }
  52. }
  53. %>
  54. <!DOCTYPE html PUBLIC "-//W3C//DTD Html 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  55. <html>
  56. <head>
  57. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  58. <title>ユーザーテーブル</title>
  59. </head>
  60. <body>
  61. <%
  62. if(message != null){
  63. %>
  64.  <%= message %>
  65. <%
  66. }else{
  67. %>
  68.  <h2>ユーザー情報一覧</h2>
  69.  <table border="1">
  70.   <tr>
  71.    <th>ユーザーID</th><th>ユーザー名</th><th>パスワード</th><th>氏名</th>
  72.   </tr>
  73. <%
  74.  for(String[] dt: ary){
  75. %>
  76.   <tr>
  77.    <td><%=dt[0] %></td><td><%=dt[1] %></td><td><%=dt[2] %></td><td><%=dt[3] %></td>
  78.   </tr>
  79. <%
  80.  }
  81. %>
  82.  </table>
  83. <%
  84. }
  85. %>
  86. </body>
  87. </html>

○ 実行結果

http://localhost:8080/WebApp/SelectTest.jsp

実行結果
実行結果

○ 解説

 データベースに接続し、データを取得します。データを取得するために29行目で、ConnectionインタフェースのcreateStatementメソッドを使って、データベースにSQL文を発行するオブジェクトを取得します。そして35行目で、StatementインタフェースのexecuteQueryメソッドを使ってデータを抽出します。その際、引数にSQL文を指定します。検索結果のResultSetオブジェクトが返されるので、変数に格納しています。

 41行目から49行目までで、検索結果を順番に取り出して、配列に格納しています。この配列(ArrayList)は表示するときに使用しています。

 87行目から93行目では、検索結果をテーブルで表示するプログラムを記述しています。配列の要素を一つずつ取り出して、テーブルの列を構成しています。

前へ   次へ