2015-01-06 7 views
1

내 액세스 데이터베이스에 성공적으로 연결하고 sql이 작동하며 그 후에 결과가 설정되었습니다. 코드는 아래와 같습니다 :Ms에서 "invalid record set status"오류가 발생했습니다.

  Statement stmt = con.createStatement(); 
      String sqlStr ="select max(ID) from GuestBook "; 
      ResultSet rset = stmt.executeQuery(sqlStr); 

하지만이 결과 세트에서 가치를 얻으려면,

  int id = rset.getInt(1); 

또는

  int id = rset.getInt("ID");//or "max(ID)" 

가 나는 SQL 예외가 있습니다.

예외가 "잘못된 레코드 세트 상태"입니다.

이 문제를 어떻게 해결할 수 있습니까?

답변

2

max(ID)에 대해 "Expr1000"의 열 이름이 생성됩니다. 하지만 잘 정의 된 별칭을 제공하려면 As 절을 사용하는 것이 더 좋습니다.

처음에는 커서가 첫 번째 행 앞에 위치하기 때문에 첫 번째 행으로 이동하려면 rset.next()으로 전화해야합니다.

Statement stmt = con.createStatement(); 
String sqlStr ="SELECT max(ID) As LastID FROM GuestBook"; 
ResultSet rset = stmt.executeQuery(sqlStr); 
int id = 0; 
if (rset.next()) { 
    id = rset.getInt("LastID"); 
    // OR 
    id = rset.getInt(1); 
} 
+0

감사합니다. int id = rset.getInt ("LastID"); 일하지 않고 다른 하나는 일합니다. – ROOT

+1

* "액세스는 집계 함수의"MaxOfID "열 이름을 만듭니다." - Access의 쿼리 빌더가이를 수행하지만 원시 SQL (질문과 같이)을 사용하고 열 별칭을 지정하지 않으면 열의 이름은 [Expr1000]입니다. –

+0

@GordThompson : 좋습니다, 텍스트를 변경했습니다. (나는 고백해야한다. 나는 jdbc를 사용한 적이 없다. 단지 검색된 정보를 가지고있다.) –