JDBC基于唯一ID更新列的特定单元格

时间:2015-04-21 03:53:37

标签: java mysql jdbc

我正在尝试根据其唯一用户ID更新特定用户的名字,姓氏和电子邮件。

我正在进行以下查询,但我得到一个异常,告诉我的语法不正确。我是JDBC和MYSQL的新手,但这就是我所做的:

PreparedStatement ps = (PreparedStatement) conn.prepareStatement("UPDATE user_table WHERE userTableID = "+ userId+ "(first_name, last_name, email) values (?, ?, ?)");
ps.setString(1, newFirstName);
ps.setString(2, newLastName);
ps.setString(3, newEmail);
ps.execute();

更新:在一些指导下,我决定这样做,而且工作正常。

PreparedStatement ps = (PreparedStatement) conn.prepareStatement("UPDATE user_table SET first_name= ?, last_name=?, email=?" + "WHERE userTableID = ?");
ps.setString(1, newFirstName);
ps.setString(2, newLastName);
ps.setString(3, newEmail);
ps.setInt(4, userId);
ps.execute();

3 个答案:

答案 0 :(得分:0)

正确的更新语法是UPDATE table_name SET column1=value1,column2=value2,... WHERE some_column=some_value; 试试这个:

PreparedStatement ps = (PreparedStatement) conn.prepareStatement("UPDATE user_table set (first_name, last_name, email) values (?, ?, ?)  WHERE userTableID = \""+ userId+ "\"");

答案 1 :(得分:0)

试试这个

PreparedStatement ps = (PreparedStatement) conn.prepareStatement("UPDATE user_table set first_name=?,last_name=?,email=? WHERE userTableID = ?");
                ps.setString(1, newFirstName);
                ps.setString(2, newLastName);
                ps.setString(3, newEmail);
                ps.setString(4, userId);
                ps.executeUpdate();

答案 2 :(得分:0)

在第二个问题中,可能存在问题,因为空格在email=?之后提供单个空格,如下所示

PreparedStatement ps =conn.prepareStatement("UPDATE user_table SET first_name= ?, last_name=?, email=? " 
                      + "WHERE userTableID = ?");
                        ps.setString(1, newFirstName);
                        ps.setString(2, newLastName);
                        ps.setString(3, newEmail);
                        ps.setInt(4, userId);
                        ps.execute();