JDBC 根据唯一 ID 更新列的特定单元格

JDBC updating specific cells of a column based off of unique id

我正在尝试根据特定用户的唯一用户 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();

更新的正确语法是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+ "\"");

试试这个

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();

第二个可能有问题,因为 space 在 email=? 之后提供一个 space,如下所示

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();