dao 的插入和更新方法不起作用

Posted

技术标签:

【中文标题】dao 的插入和更新方法不起作用【英文标题】:Insert and update methods of dao are not working 【发布时间】:2015-07-16 23:01:53 【问题描述】:

由于某种原因,addUser()updateUser() 方法不起作用。 有人可以看看代码并找出我在哪里犯错吗?

public void addUser(User user) 
    try 
        PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO users(UserId, FirstName, LastName, JobTitle, Email, UserName, Password) values (?,?,?,?,?,?,?)");
        // Parameters start with 1
        preparedStatement.setInt(1,user.getUserId());  
        preparedStatement.setString(2, user.getFirstName());
        preparedStatement.setString(3, user.getLastName());           
        preparedStatement.setString(4, user.getJobTitle());
        preparedStatement.setString(5, user.getEmail());
        preparedStatement.setString(6, user.getUserName());                 
        preparedStatement.setString(7, user.getPassword());

        preparedStatement.executeUpdate();

     catch (SQLException e) 
        e.printStackTrace();
    


public void updateUser(User user) 
    try 
        PreparedStatement preparedStatement = connection.prepareStatement("update users  set Email=?,  Password=? where Username=?");

        preparedStatement.setString(1, user.getEmail());  
        preparedStatement.setString(2, user.getUserName());
        preparedStatement.setString(3, user.getPassword());


        preparedStatement.executeUpdate();

     catch (SQLException e) 
        e.printStackTrace();
    

请注意,我在 java 方面没有太多经验。 没有打印错误,这就是为什么我不知道哪里出了问题。

【问题讨论】:

【参考方案1】:

在你的 updateUser() 中,参数的顺序是错误的。从您的 sql 语句中,它应该是电子邮件、密码,然后是用户名。

preparedStatement.setString(1, user.getEmail());  
preparedStatement.setString(2, user.getPassword());    
preparedStatement.setString(3, user.getUserName());

另外,我建议您添加一个“finally”块来关闭语句和结果集。

【讨论】:

以上是关于dao 的插入和更新方法不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Spring 的 TestNG 回滚事务不起作用

Oracle Forms 10g,多次插入和更新不起作用

数据访问对象方法不起作用

为啥java更新查询不起作用?

HIbernate 批量插入或更新在 Spring Boot 中不起作用

SQL更新否则插入不起作用[重复]