java.sql.SQLException:[Microsoft] [ODBC驱动程序管理器]无效的游标状态

时间:2011-09-12 17:54:33

标签: java sql database

我创建了一个简单的应用程序,用于将数据库值与文本字段值进行比较,但是当我执行项目时,它为我提供了以下Exception

  

java.sql.SQLException:[Microsoft] [ODBC驱动程序管理器]无效的游标状态

这是我正在使用的代码:

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);
   }
}

这可能是什么原因Exception

3 个答案:

答案 0 :(得分:5)

当您执行s.executeQuery()时,ResultSet的初始位置<第一行之前

您必须rs.next()将其推进到第一行。

将您的ResultSet处理封装在if ( s1.next() ) {}

答案 1 :(得分:0)

你需要使用next函数将Resultset指针指向第一行,然后在数据库值和textField值之间进行比较 我希望这有用。

答案 2 :(得分:-1)

试试这样..

        ResultSet s1=s.executeQuery();
        String database=null;
        if(s1.next())
        {
          database =s1.getString(1);
        }
  • 使用 s1.getString(1)时不使用 s1.next()
  • s1 未指向第一行。这就是异常的原因