int无法转换为resultSet

时间:2016-12-26 15:56:11

标签: java sql prepared-statement

您好所有代码都可以在没有结果集的情况下工作,但是我需要它包含在内才能将它添加到结果集中。有什么方法可以在一种方法中做到吗? 此代码用于更新我的java程序中的用户详细信息。我使用结果集来获取用户详细信息。

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;
}

错误在线:
ResultSet resultSet = inserter.executeUpdate();

错误是:int无法转换为ResultSet

1 个答案:

答案 0 :(得分:1)

使用字符串'查询&#39>构建查询。这是一个更新语句,更新就像一个插入,它不返回结果集。

ExecuteUpdate的规范是:

  

"执行此PreparedStatement对象中的SQL语句   必须是SQL数据操作语言(DML)语句,例如   INSERT,UPDATE或DELETE;或者什么都不返回的SQL语句,   例如DDL声明。"

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

您需要将代码更改为 inserter.executeQuery(); 但是您还需要将实际查询更改为select语句或任何返回内容的语句。

希望这有帮助