2012-06-07 5 views
5

テーブルから最大IDを与えるコードを書きたいと思いますが、エラーが発生しています。Javaコードのデータベースのテーブルから最大IDを取得する方法

コード:

Class.forName("oracle.jdbc.driver.OracleDriver"); 
Connection con = DriverManager.getConnection("XXXXX", "XXXX", "XXX"); 
Statement st2 = con.createStatement(); 
ResultSet idMax = st2.executeQuery("select nvl(max(work_id),0) from workdetails"); 
int id2 = idMax.getInt(0); // throw error: Invalid column index 

System.out.println(id2); 

// **************************** 
int id2 = idMax.getInt("work_id"); 
System.out.println(id2); // throw error: ResultSet.next was not called 

答えて

7

結果セットがダミーのレコードから始まり、nextメソッドを呼び出すことで、実際の最初のレコードに進めることが必要です。

ResultSet idMax = st2.executeQuery("select nvl(max(work_id),0) max_id from workdetails"); 
int id2 = -1; 
if (idMax.next()) { 
    id2 = idMax.getInt("max_id"); 
} 
2

あなたは

idMax.next(); 
を逃しました

これは、ポインタを最初の行に設定します。

ResultSet idMax = st2.executeQuery("select nvl(max(work_id),0) from workdetails"); 
int id2 = 0; 
if (idMax.next()){ 
    id2 = idMax.getInt(1); 
} 
System.out.println(id2); 
:あなただけはそう

idMax.get (1); 

を使用する必要が次に、あなたのコードは次のようになります

関連する問題