7

テーブルから最大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
4

2 に答える 2

8

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");  
}
于 2012-06-07T10:24:19.923 に答える
2

あなたが逃しました

idMax.next();

これにより、ポインタが最初の行に設定されます。その後、あなただけが使用する必要があります

idMax.get ( 1 ); 

したがって、コードは次のようになります。

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);
于 2012-06-07T10:30:43.883 に答える