MySQL'de hata alma java kodu ile silme komutu

Tablodan kayıtları silmek için jdbc'yi kullandım, aynı işlemi yaparken, aşağıda gösterildiği gibi bir hata aldım:

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)

Benim kodum şu şekildedir: 1) sorgu belirtmek için iki dizeleri alınır 2) Bağlantı nesnesi deyimi hazırlamak için kullanılır 3) 'int' değişkendeki güncelleme sorgusunun sonucunu kontrol ettim 4) Sonuç kümesini kullandım, sonuç kümesi istisnasını alıyorum ...!

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 - orada ne var
katma yazar Bozho, kaynak
Tam olarak durumun gerçekleştiği yeri kesin olarak belirtebilirseniz yardımcı olur. Bize gösterilecek sorudaki kodu ekleyin.
katma yazar Johan, kaynak
@PhilippReichart, delete ifadesi bir resultset döndürmez. Ve kod setint değil GETINT
katma yazar Johan, kaynak
@PhilippReichart, aha evet şimdi senin noktanı görüyorum. Özel durum, başka bir kodda, kesinlikle kod örneğinde değil, hata bir sonuç kümesi içerdiğinden oluşur. OP'nin sıkışmış olmasına şaşmamalı.
katma yazar Johan, kaynak
Stacktrace ve kod snippet'inin herhangi bir korelasyonu yok gibi görünüyor. UpdateLookupTable.deleteLookupTableRecords() yönteminin kodunu gönderir misiniz? ResultSet üzerinde getInt() 'i çağırıyorsunuz ve rs.next() ' i aramadan önce aradığınız anlaşılıyor.
katma yazar Philipp Reichart, kaynak
@Johan Ben asla öyle demedim - stacktrace açık bir şekilde ResultSet 'in OP'nin kodunda bir yerde yer aldığını gösterir, yine de getInt() ' nin gerçekleştiği yer burasıdır.
katma yazar Philipp Reichart, kaynak

1 cevap

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

6
katma