2016-12-26 5 views
-1

Hallo, der ganze Code funktioniert ohne die Ergebnismenge, aber ich brauche es für mich, um es zum Ergebnissatz hinzuzufügen. Kann ich es irgendwie mit der einen Methode machen? Dieser Code wird verwendet, um Benutzerdetails in meinem Java-Programm zu aktualisieren. Ich verwende das Resultset, um Benutzerdetails zu erhalten.int kann nicht in resultSet konvertiert werden

public User editUserDetails(int userID ,String email, String password, String fName, String lName, String bio, String image) { 

    boolean found = false; 
    Connection c = DBHelperClass.getConnection(); 
    String query = "UPDATE user SET email= ? , password= ?,fName= ?,lName= ?,bio= ?,image=? WHERE userID= ?"; 

    if (c != null) { 
     try { 
      PreparedStatement inserter = c.prepareStatement(query); 
      inserter.setString(1, email); 
      inserter.setString(2, password); 
      inserter.setString(3, fName); 
      inserter.setString(4, lName); 
      inserter.setString(5, bio); 
      inserter.setString(6, image); 
      inserter.setInt(7, userID); 

      System.out.println("Update user: " + query); 
      ResultSet resultSet = inserter.executeUpdate(); 
      inserter.executeUpdate(); 
      inserter.close(); 

      while (resultSet.next()) { 
       this.setUserID(resultSet.getInt("userID")); 
       this.email = resultSet.getString("email"); 
       this.setPassword(resultSet.getString("password")); 
       this.type=resultSet.getString("type"); 
       this.fName=resultSet.getString("fName"); 
       this.lName=resultSet.getString("lName"); 
       found = true; 

      } 
     } catch (SQLException ex) { 
      Logger.getLogger(User.class.getName()).log(Level.SEVERE, null, ex); 
     } 

    } 
    return this; 
} 

Fehler auf der Leitung:
ResultSet resultSet = inserter.executeUpdate();

Fehler ist: int kann nicht auf resultSet

+0

In welcher Linie Sie stehen vor Problem –

+0

Diese Zeile ResultSet resultSet = inserter.executeUpdate(); – Pavol

+0

Eigentlich, was ist das Problem, ich konnte es nicht verstehen. Kannst du etwas klarer sein? –

Antwort

1

Sie die Abfrage konstruieren umgewandelt werden, um die Zeichenfolge ‚query‘ verwendet, die eine Update-Anweisung ist, ein Update wie ein Einsatz ist, spielt es keine Ergebnismenge zurück.

Die Angabe von ExecuteUpdate ist:

„Führt die SQL-Anweisung in diesem PreparedStatement-Objekt, das muss eine SQL Data Manipulation Language (DML) eine Erklärung, wie INSERT, UPDATE oder DELETE sein, oder eine SQL-Anweisung, die nichts zurückgibt, wie eine DDL-Anweisung. "

(https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html)

Sie müssen Ihren Code inserter.executeQuery ändern(); Sie müssen jedoch auch die tatsächliche Abfrage in eine SELECT-Anweisung oder eine Anweisung ändern, die etwas zurückgibt.

hoffe, das hilft

Verwandte Themen