• ベストアンサー

データ数をカウントしたいのですが

JAVAのJDBCを使いMySqlを操作しデータ数を取得するプログラムです。自分なりに考えたプログラムは Connection con = null; String sql = "select count(*) from テーブル名"; // コネクションを作成する。 con = DriverManager.getConnection(url, user, pass); Statement st = con.createStatement(); // SQLを実行する。 ResultSet rs = st.executeQuery(sql); String count = rs.getString("count(*)"); 実行した結果上手く出来ないのですが、この部分での間違いはありますか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#86752
noname#86752
回答No.1

どう上手くいかないのかエラーメッセージなどがあると分かりやすいのですが・・・とりあえず、count(*)というカラム名は取得できなかったと思います。 sqlを select count(*) as cnt from テーブル名 にして、 値を取得する部分を String coung = rs.getString("cnt"); にしてみてください。 もしくはsqlはそのままで、 rs.getString(1) で1番目のカラムが取得できます。 (カラム名が固定なら最初のやりかたの方が分かりやすいと思います。)

morumomo
質問者

お礼

ありがとうございます。 教えていただいた通りでできました。 今回のエラーの問題は他の場所でした。 お世話になりました。

morumomo
質問者

補足

自分が考えたやり方ではエラーメッセージ事態はなく取得した値が表示されませんでした。 教えていただいてやり方を試したところ java.sql.SQLException: Before start of result set at com.mysql.jdbc.ResultSet.checkRowPos(ResultSet.java:3620) at com.mysql.jdbc.ResultSet.getString(ResultSet.java:1758) at com.mysql.jdbc.ResultSet.getString(ResultSet.java:1822) というエラーが発生しました。

その他の回答 (1)

  • LunaRossa
  • ベストアンサー率32% (18/56)
回答No.2

// SQLを実行する。 ResultSet rs = st.executeQuery(sql); if(rs.next()) // この行を追加 String count = rs.getString("count(*)"); 試していないので確かではないですが、 ResultSetオブジェクトは取得した初期の状態ではカーソルが先頭行の前(つまりデータが存在しないところ)にあるため、必ずnext()メソッドを呼び出して先頭行にカーソル移動するのではなかったでしょうか。 的外れだったらごめんなさい!

morumomo
質問者

お礼

ありがとうございます。さっそく試してみます!

関連するQ&A

専門家に質問してみよう