- PR -

ResultSetについて

1
投稿者投稿内容
めっすぃ〜
会議室デビュー日: 2006/09/02
投稿数: 9
投稿日時: 2007-05-10 10:14
現在Javaとデータベースを連携させてプログラムを作っています。
商品の在庫管理プログラムで、
まず最初に行う処理を入力します。(表示、登録、削除、終了の4つです)

そして、表示を選んだときに、データが無かった場合にエラー処理をしたいのですが、
それがうまくいきません。

// データ件数を求めるSQL文を作成
sql = "SELECT COUNT (*) FROM #テーブル名";
// クエリーを実行して結果セットを取得
ResultSet rs = stmt.executeQuery(sql);

if(rs.equals("0"))
{
System.out.println("エラー");
break;
}

と、してみたんですがif文の中に入ってくれません。

Access上で上記のSQL文を入力するとちゃんと「0」とでるんですが…

何かまずいところや、意見ありましたらご教授お願いします。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2007-05-10 10:39
引用:

めっすぃ〜さんの書き込み (2007-05-10 10:14) より:
if(rs.equals("0"))


ResultSetがStringの"0"と等しいわけないでしょう?
それにifの中になぜbreakがあるのでしょう?

COUNT(*)したのならば、
ResultSetの先頭行の1列目に数値系の型のデータが入ります。

というわけで、
ResultSet#next()した後に、
ResultSet#getInt(1)とすればよいです。

他にも、ResultSet#next()は次の行が存在しない場合にfalseを返すので、
普通にSELECT(COUNTでない)して、if(!rs.next())としても可能です。
これならわざわざCOUNT用のSQLを作らなくても済みます。
sawat
大ベテラン
会議室デビュー日: 2006/08/02
投稿数: 112
投稿日時: 2007-05-10 10:39
equalsメソッドの使い方が根本的に間違っています。

rs.equals("0")

これは、rsに格納されたオブジェクトが"0"という文字列型オブジェクトと等しいか比較しています。もちろんrsはResultSet型オブジェクトで、文字列型オブジェクトではないので常にfalseが返ります。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-05-10 10:52
最低限APIドキュメントを見て、equalsが何を示すかについて調べましょう。
質問する前にできる事はたくさんあると思いますよ。
1

スキルアップ/キャリアアップ(JOB@IT)