JDBC不会更新PostgreSQL数据库

时间:2016-12-21 03:31:42

标签: java postgresql spring-mvc jdbc

使用Spring,PostgreSQL和JDBC。数据库已设置,我成功使用JDBC从数据库中提取数据。但是,使用表单制作POST时,更改不会通过。在调试模式下,模型上存在正确的属性,因此我确信错误发生在数据库连接中。

表格:

<form action="update-user" method="POST">
    <ul class="form-flex-outer">
        <li>
            <label for="username">Username:</label>
            <input type="text" name="username" value="${ currentUser.username }" />
        </li>
        <li>
            <label for="password">Password:</label>
            <input type="text" name="password" value="${ currentUser.password }" />
        </li>
        <li>
            <label for="email">Email:</label>
            <input type="text" name="email" value="${ currentUser.email }" />
        </li>
        <li>
            <input type="submit" value="Submit changes" />
            <input type="hidden" value="${ currentUser.userId }" />
        </li>
    </ul>
</form>

控制器:

@RequestMapping(path="/update-user", method=RequestMethod.POST)
public String submitUpdatedUserInformation(User user) {

    userDAO.updateUserInformation(user);

    return "redirect:/user-home";
}

DAO方法:

@Override
public void updateUserInformation(User user) {

    String sqlQuery = "UPDATE users " +
                      "SET username = ?, " +
                          "password = ?, " +
                          "email = ?, "  +
                          "updated_at = NOW() " +
                       "WHERE user_id = ?";

    jdbcTemplate.update(sqlQuery, user.getUsername(), user.getPassword(), user.getEmail(), user.getUserId());
}

我知道springmvc-servelet.xml文件中有关于事务的配置,但我过去使用过的JDBC没有遇到任何麻烦。

从DB init创建用户:

CREATE USER app_owner WITH PASSWORD 'app_owner1';
GRANT ALL 
ON ALL TABLES IN SCHEMA public
TO app_owner;

GRANT ALL 
ON ALL SEQUENCES IN SCHEMA public
TO app_owner;

1 个答案:

答案 0 :(得分:1)

不应该

<input type="hidden" value="${ currentUser.userId } }" />

<input type="hidden" value="${ currentUser.userId }" name="userid" />