【问题标题】:int cant be converted into resultSetint 不能转换成结果集
【发布时间】:2016-12-26 15:56:11
【问题描述】:

您好,所有代码都可以在没有结果集的情况下工作,但我需要包含它才能将其添加到结果集中。有什么办法可以用一种方法做到这一点吗? 此代码用于更新我的 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

【问题讨论】:

  • 你在哪一行遇到问题
  • 这一行 ResultSet resultSet = inserter.executeUpdate();
  • 其实是什么问题,我看不懂。能说清楚一点吗?
  • 我已经编辑了问题
  • executeUpdate() 不返回 ResultSet。如果要从数据库中检索数据,则需要使用executeQuery() 执行的 SELECT 语句,它确实返回一个结果集。但是我不明白您为什么要在更新方法中检索ResultSet

标签: java sql prepared-statement


【解决方案1】:

您使用字符串 'query' 构造查询,它是一条更新语句,更新类似于插入,它不返回结果集。

ExecuteUpdate 的规范是:

"执行此 PreparedStatement 对象中的 SQL 语句,其中 必须是 SQL 数据操作语言 (DML) 语句,例如 插入、更新或删除;或不返回任何内容的 SQL 语句, 比如一个 DDL 语句。”

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

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

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-05
    • 2023-03-09
    • 2014-06-04
    • 2018-02-05
    • 1970-01-01
    • 2013-06-08
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多