2016-12-17 2 views
0

Ich versuche, einen Wert aus einer Spalte in einer anderen Tabelle zu erhalten und an die SP Prozedur übergeben, aber ich bekommeausführen

Keine aktuelle Zeile im ResultSet

bei cs.setString(1, rsS.getString("ID")); // p_ID

was der richtige Weg ist, diese

//get value P_ID based on itemnumber 
     PreparedStatement preparedStatement = null; 
      String sqli = "select ID,[ItemNumber] from [file].[Item] where [ItemNumber] =?"; 
     preparedStatement = con.prepareStatement(sqli); 
     preparedStatement.setString(1, itemcard); 
     ResultSet rsS = preparedStatement.executeQuery(); 
           while (rsS.next()) 
            System.out.println(rsS.getString("ID")); 

           //for updating trash 
           CallableStatement cs = null; 
           String queryundo = "{ call [file].[usp_trashItem](?,?,?,?)} "; 
           cs = con.prepareCall(queryundo); 
           cs.setString(1, rsS.getString("ID")); // p_ID 
           cs.setString(2, "U"); //p_Action(U for untrash T for Trash) 
           cs.setInt(3, 1); //p_Quantity 
           cs.setString(4, doerTicket); //p_DoerTicket 
           cs.executeQuery(); 
           con.close(); 
      } 
     } 
zu tun

und mit diesem

    PreparedStatement preparedStatement = null; 
        String sqli = "select ID,[ItemNumber] from [file].[Item] where [ItemNumber] =?"; 
        preparedStatement = con.prepareStatement(sqli); 
        preparedStatement.setString(1, itemcard); 
        ResultSet rsS = preparedStatement.executeQuery(); 
        while (rsS.next()) { 
         System.out.println(rsS.getString("ID")); 

         //for updating trash 
         CallableStatement cs = null; 
         String queryundo = "{ call [file].[usp_trashItem](?,?,?,?)} "; 
         cs = con.prepareCall(queryundo); 
         cs.setString(1, rsS.getString("ID")); // p_ID 
         cs.setString(2, "U"); //p_Action(U for untrash T for Trash) 
         cs.setInt(3, 1); //p_Quantity 
         cs.setString(4, doerTicket); //p_DoerTicket 
         cs.executeQuery(); 
         con.close(); 
        } 
       } 
      } 

i bekommen

Die executeQuery Methode müssen ein Ergebnis

Antwort

1

gesetzt Die while (rsS.next()) hat keine geschweiften Klammern, so wird es Schleife nur auf System.out.println(rsS.getString("ID"));.

Außerhalb der Schleife (nach rsS.next() gibt false zurück) wird die ResulSet leer sein.

Auch wahrscheinlich cs hält keine Abfrage, sondern eine andere Art von Anweisung, so dass Sie nicht cs.executeQuery() verwenden können, weil es Ihnen einen Fehler gibt, wenn es kein Ergebnis zurückgibt.

Versuchen Sie mit cs.executeUpdate() oder cs.execute().

+0

Ich habe versucht, die '(rss.next()) {meine Statements}', aber das hat mich geärgert Die executeQuery-Methode muss eine Ergebnismenge –

+0

Ich versuchte zu sehen, ob ich dieses Problem mit der ExecuteQuery-Methode lösen musste Ergebnis Ergebnis mit der Ergebnismenge –

+0

genial, die den Trick getan hat –

Verwandte Themen