您好所有代码都可以在没有结果集的情况下工作,但是我需要它包含在内才能将它添加到结果集中。有什么方法可以在一种方法中做到吗? 此代码用于更新我的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
答案 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语句或任何返回内容的语句。
希望这有帮助