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

时间:2015-07-16 23:01:53

标签: java mysql jdbc prepared-statement

由于某些原因,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 个答案:

答案 0 :(得分:1)

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

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

另外,我建议你添加一个"最后"阻止关闭语句和结果集。