Foutmelding in MySQL-verwijderopdracht via java-code

Ik heb jdbc gebruikt om records uit de tabel te verwijderen, terwijl ik hetzelfde uitwissel, kreeg ik een foutmelding zoals ik hieronder heb weergegeven:

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)

Mijn code is als volgt: 1) twee reeksen worden genomen om de vraag te specificeren 2) verbindingsobject wordt gebruikt om een ​​verklaring voor te bereiden 3) controleerde het resultaat van de updatevraag in de variabele 'int' 4) Ik heb de resultaat-set niet gebruikt, maar de uitzondering op de uitslag is ...!

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 - wat is daar
toegevoegd de auteur Bozho, de bron
Het zou helpen als u precies kunt vaststellen waar de uitzondering zich precies bevindt. En annoteer de code in de vraag om ons te laten zien.
toegevoegd de auteur Johan, de bron
@PhilippReichart, een instructie delete retourneert geen resultat. En de code is setint niet GETINT
toegevoegd de auteur Johan, de bron
@PhilippReichart, aha ja ik zie nu wat je bedoelt. De uitzondering treedt op in een andere code, zeker niet in de codevoorbeeld omdat de fout een resultat betreft. Geen wonder dat het OP vastzit.
toegevoegd de auteur Johan, de bron
De stacktrace en het codefragment lijken geen correlatie te hebben. Kunt u de code van de methode UpdateLookupTable.deleteLookupTableRecords() plaatsen? Je belt getInt() op een ResultSet daar en het ziet ernaar uit dat je daarvoor nog geen rs.next() hebt aangeroepen.
toegevoegd de auteur Philipp Reichart, de bron
@Johan, ik heb het nooit gezegd - de stacktrace toont duidelijk dat een ResultSet ergens in de code van OP betrokken is, maar dat is ook waar de getInt() gebeurt.
toegevoegd de auteur Philipp Reichart, de bron

1 antwoord

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

6
toegevoegd