2009-10-07 30 views
5

こんにちは、私はDBに接続し、UniqueId列の最大要素を取得し、maxIDという名前の整数変数に割り当てます。ここでは私のアプローチです:java ResultSet、MAX sql関数を使用

int maxID = 0; 
Statement s2 = con.createStatement(); 
s2.execute("SELECT MAX(UniqueId) FROM MyTable");  
ResultSet rs2 = s2.getResultSet(); // 
while (rs2.next()){ 
    maxID = rs2.getInt(0); 
} 

これをうまく解決する方法は、 "rs2.next()" whileループを使用することで非常に粗末な感じです。

おかげ

答えて

10
if (rs2.next()) { 
    maxID = rs2.getInt(1); 
} 
1

.next()があれば「どこ」の行からカーソルを再配置することです。

あなたが好きならテストすることができますが、それはお勧めですが、ループ中にエスケープすることはできません。クエリは、単一の行を返すことが確実なら、あなたはこれを行うことができますが

if (rs.next()) { 
    maxID = rs2.getInt(1); 
} 
+0

このエラーを表示している私は、Eclipse上記のように変更されたときに、良いアイデアだと思いますが: 説明\tリソース\tパス\t場所\tタイプ は、プリミティブ型boolean型\t Alertmail.java \t /アラートメール上のgetInt(int)を呼び出すことはできません/ src \t line 33 \t Javaの問題 – Hellnar

+0

はい、 'next()'はブール値を返し、 'while()'ループで動作します。 – akf

+0

はい、そうです。データを取得する前にカーソルの位置を変更する必要があります。私は答えを急いでしまいました。この夜の質問を見てはいけません。私は私の答えを編集するつもりです – Juparave

9

Boris Pavlovićは、ほぼ正しかったです。

if (rs2.next()) { 
    maxID = rs2.getInt(1); 
} 

結果セットの列は1から始まります。そして、whileの代わりにifを使用する理由は、実行しているクエリが1行だけを返すということです。

+0

私はちょうど私の答えを固定して+1を与えた –

関連する問題