2011-09-12 26 views
3

データベース値とテキストフィールド値を比較する単純なアプリケーションを作成しましたが、プロジェクトを実行すると次のように表示されますExceptionjava.sql.SQLException:[Microsoft] [ODBC Driver Manager]無効なカーソル状態

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

答えて

4

s.executeQuery()を実行すると、ResultSetの最初の位置はBEFOREの最初の行になります。

最初の行に進めるには、rs.next()を実行する必要があります。

s1.getStringは、(1)s1.next()せずに使用した場合。

-1

は次のように試してみてください。..

 ResultSet s1=s.executeQuery(); 
     String database=null; 
     if(s1.next()) 
     { 
      database =s1.getString(1); 
     } 
  • if (s1.next()) {}ブロックであなたのResultSet処理を囲み例外
+0

ありがとうalot it's work – king

+0

例外なく動作しましたか? –

0

あなたは、次の機能を使って、最初の行に結果セットポインタを作成し、する必要がありますが、あなたは、データベースの値との間で必要なことを比較しますなぜ

  • S1は最初row.Thatのを指していませんtextFieldの値 私はこれが役に立つと願っています。

  • 関連する問題