开发者

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid cursor state

开发者 https://www.devze.com 2023-04-04 21:04 出处:网络
I created a simple application that compares a database value with a textfield value, but when I execute the project it gives me the following Exception:

I created a simple application that compares a database value with a textfield value, but when I execute the project it gives me the following Exception:

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid cursor state

This is the code I'm using:

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(开发者_Go百科Exception ex) {
      System.out.println("THE EXCEPTION IS"+ex);
   }
}

What could be the cause if this Exception?


When you do s.executeQuery(), the initial position of the ResultSet is BEFORE the first row.

You have to do rs.next() to advance it to the first row.

Enclose your ResultSet processing in a if ( s1.next() ) {} block


you need to make Resultset pointer to the first row by using next function and then make the compare that you need between the database value and the textField value i hope this helpful.


Try like this..

        ResultSet s1=s.executeQuery();
        String database=null;
        if(s1.next())
        {
          database =s1.getString(1);
        }
  • When s1.getString(1) is used without s1.next().
  • s1 is not pointing to first row.That's why the exception
0

精彩评论

暂无评论...
验证码 换一张
取 消