MySQLコードからjavaコマンドを削除する際にエラーが発生する

私はjdbcを使ってテーブルからレコードを削除しましたが、同じものを実行している間に、以下に示すようにエラーが発生しました:

java.sql.SQLException: Before start of result set
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
    at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:841)
    at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2674)
    at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2815)
    at org.apache.commons.dbcp.DelegatingResultSet.getInt(DelegatingResultSet.java:236)
    at net.ordernet.vd.lookupTable.UpdateLookupTable.deleteLookupTableRecords(UpdateLookupTable.java:118)
    at net.ordernet.vd.soap.UpdateLookupTableTool.deleteLookupTableRecords(UpdateLookupTableTool.java:50)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)

私のコードは次のとおりです: 1)クエリを指定するために2つの文字列が取られます 2)接続オブジェクトを使用してステートメントを準備する 3) 'int'変数で更新クエリの結果を確認しました 4)結果セットを使用して、結果セットの例外を取得することはできません。

try 
{
  String queryDeleteLookupTableRecords = "delete from LookupTableRecords where tableId = ?";
  String queryDeleteLookupTableRows = "delete from LookupTableRows where tableId = ?";

  PreparedStatement psDeleteLookupTableRecords = oConnection.prepareStatement(queryDeleteLookupTableRecords);
  PreparedStatement psDeleteLookupTableRows = oConnection.prepareStatement(queryDeleteLookupTableRows);
  psDeleteLookupTableRecords.setInt(1, oLookupTable.getID());
  psDeleteLookupTableRows.setInt(1, oLookupTable.getID());
  int result = psDeleteLookupTableRecords.executeUpdate();
  int result2 = psDeleteLookupTableRows.executeUpdate();
  if(result > 0 && result2 > 0)
  {
     iReturnValue = 1;
  }
  psDeleteLookupTableRecords.close();
  psDeleteLookupTableRows.close();
}
catch (SQLException oSqlException) 
{
  Log.print(oSqlException);
} 
1
UpdateLookupTable.java:118 - そこにあるもの
追加された 著者 Bozho,
正確に例外が発生する場所を特定できる場合は、役立ちます。また、質問のコードに注釈を付けて表示します。
追加された 著者 Johan,
@PhilippReichart、 delete ステートメントは結果セットを返しません。コードはGETINTではなく setint です
追加された 著者 Johan,
@PhilippReichart、ああ、はい、私は今あなたのポイントを参照してください。エラーは結果セットが含まれているため、コードサンプルでは例外ではありません。 OPが詰まっているのも不思議ではありません。
追加された 著者 Johan,
スタックトレースとコードスニペットには相関がないようです。 UpdateLookupTable.deleteLookupTableRecords()メソッドのコードを投稿できますか? ResultSet にある getInt()を呼び出すと、その前に rs.next()を呼び出さなかったようです。
追加された 著者 Philipp Reichart,
@Johan私は決して言いませんでした - stacktraceは明らかに ResultSet がOPのコードのどこかに含まれていることを示していますが、それは getInt()が起きている場所です。
追加された 著者 Philipp Reichart,

1 答え

Your problem is not in the code that you showed. You are having a resultSet.getInt(..) somewhere before calling resultSet.first() or .next()

6
追加された