テーブル管理Beanクラスの作成
続いて、DataTableBeanクラスを作成しましょう。このクラスでは、取得したレコードをAddressDataインスタンスのリストとしてフィールドに保持し、管理するようにしてあります。
package jp.allabout;
import java.sql.*;
import java.util.*;
public class DataTableBean {
private ListtableData;
private String query;
public DataTableBean(){
this.createRecords();
}
public ListgetTableData() {
return tableData;
}
public void setTableData(ListtableData) {
this.tableData = tableData;
}
public String getQuery() {
return query;
}
public void setQuery(String query) {
this.query = query;
}
public void createRecords(){
this.createRecords("");
}
public void createRecords(String sql){
Connection con = null;
Statement state = null;
ResultSet result = null;
query = "select * from addressdata";
query += (sql == null || sql.equals("")) ? "" : " where " + sql;
tableData = new ArrayList();
try {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
con = DriverManager.getConnection
("jdbc:derby:C:\\DerbyDatabases\\MyDB","admin","adminadmin");
state = con.createStatement();
result = state.executeQuery(query);
while(result.next()){
int id = result.getInt("id");
String name = result.getString("name");
String mail = result.getString("mail");
String memo = result.getString("memo");
tableData.add(new AddressData(id,name,mail,memo));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
result.close();
state.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
ここでは、createRecordsというメソッドでデータベースにアクセスし、レコードを取得してフィールドのListに保管する処理を行っています。ざっとですが、データベースアクセスの基本的な流れを整理しておきましょう。
・まず、ドライバークラスをロードします。
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
・指定したデータベースに接続するためのConectionを取得します。
con = DriverManager.getConnection
("jdbc:derby:C:\\DerbyDatabases\\MyDB","admin","adminadmin");
・Connectionから、Statementインスタンスを取得します。
state = con.createStatement();
・クエリーを送信し、結果のResultSetインスタンスを取得します。
result = state.executeQuery(query);
これで、データベースにアクセスし、結果となるResultSetインスタンスを取得することができました。後は繰り返しを使い、ResultSetのnextメソッドを呼び出し、ResultSetのgetIntやgetStringを使って指定したフィールドの値を取り出し、それをAddressDataインスタンスにしてListに保管する、という作業を繰り返していくだけです。