我有一个表格,其中我将更改用户值。 但我没有指定值密码字段。 例如我改变了一些值并提交,但没有更改密码字段。Java jdbc。如果变量为null,如何不更改数据库中的记录?
<form action="/User" method="get">
<input type="hidden" name="id" value="${param.id}" />
<input type="hidden" name="command" value="editUser"/>
Full name: <input type="text" name="fullName" value="${param.fullName}"/><br/>
Password: <input type="text" name="password"><br/>
name="role"/><br/>
<input type="submit" value="Add"/>
</form>
所以servlet接收密码变量中的空值并传递UserDao中的值。 我需要,如果密码更改它必须在数据库中更改, 否则不会更改。
public void updateUser(User user){
Connection connection = dataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("update \"User\" set id_role = ?, fullname = ?, password = ? WHERE id = ?");
preparedStatement.setInt(1, user.getIdRole());
preparedStatement.setString(2, user.getFullName());
preparedStatement.setString(3, user.getPassword()!=null ? user.getPassword() : "old password");
preparedStatement.setInt(4, user.getId());
preparedStatement.executeUpdate();
}
你必须使用两个查询。带密码更新和不带。 – Jens