java.sql.ResultSet の行数を取得する

java.sql.PreparedStatement.executeQuery() でSQL文を実行したりすると返ってくる java.sql.ResultSet には行数をgetする関数は用意されてないので、以下のように最後の行に移ってgetRow()するといった処理で行数を得ます。

rs.last();
int number_of_row = rs.getRow();
rs.beforeFirst();   //最初に戻る

以下のようにして、MySQLのデータベースのテーブル名一覧を取得できます。

String sql = "show tables from " + catalogId;
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
// getTables を使ってうまくテーブル名一覧を得る方法もあるらしいがうまくできなかったので
// 単純にSHOW TABLES FROM catalogId を実行する

rs.last();
int number_of_tables = tables_rs.getRow();
rs.beforeFirst();

ArrayList<String> table_list = new ArrayList<String>(number_of_tables);
while (rs.next()) {
  table_list.add(rs.getString(1));  // rs.getString("TABLE_NAME") でいけるかと思ったけどダメだった…
}