2011-09-12 5 views
3

데이터베이스 값을 텍스트 필드 값과 비교하는 간단한 응용 프로그램을 만들었지 만 프로젝트를 실행할 때 Exception :java.sql.SQLException : [Microsoft] [ODBC Driver Manager] 커서 상태가 올바르지 않음

java.sql.SQLException :

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { 
    String dataSource ="testDb"; 
    String U="jdbc:odbc:"+dataSource; 
    try { 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     Connection con=DriverManager.getConnection(U,"",""); 

     PreparedStatement s=con.prepareStatement("Select * from student"); 
     ResultSet s1=s.executeQuery(); 


     String textField; 
     textField=jTextField1.getText(); 
     String database =s1.getString(1); 
     if(textField.equals(database)) { 
     System.out.println("ok"); 
     } else { 
     System.out.println("Not ok"); 
     } 
    } catch(Exception ex) { 
     System.out.println("THE EXCEPTION IS"+ex); 
    } 
} 
,691 : [마이크로 소프트] [ODBC 드라이버 관리자] 잘못된 커서 상태

이것은 내가 사용하는 코드입니다

이 경우 Exception이 원인 일 수 있습니까? 당신이 s.executeQuery()을 수행 할 때

답변

4

ResultSet의 초기 위치는 첫 번째 행하기 전에 입니다.

첫 번째 행으로 이동하려면 rs.next()을 수행해야합니다.

-1

이렇게 시도해보십시오 if (s1.next()) {} 블록에 ResultSet 처리 묶 ..

 ResultSet s1=s.executeQuery(); 
     String database=null; 
     if(s1.next()) 
     { 
      database =s1.getString(1); 
     } 
  • s1.getString (1)s1.next()없이 사용되는 경우. 예외
+0

감사합니다. 작동하지 않습니다. – king

+0

예외없이 작동 했습니까? –

0

는 다음 기능을 사용하여 첫 번째 행에 결과 집합 포인터를 만들 필요가 당신이 데이터베이스 값 사이에 필요 비교 할 이유

  • S1 먼저 row.That의에 연결되지 않습니다 textField 값 이 정보가 도움이 되었기를 바랍니다.

  • 관련 문제