SQL - Java - UPDATE语句查询

SQL - Java - UPDATE statement query

所以我想做的是"Update the 'usertype' column in the 'user' table WHERE the email(/user) value is obtained from the textbox"

JButton GrantButton = new JButton("Grant Seller Access");
GrantButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
        try {
            String update_query = "UPDATE user SET usertype = 'seller' WHERE email = " & GrantField.getText()";"
            //Here is where the error is stated on eclipse

            PreparedStatement pSt = connect.prepareStatement(update_query);
            pSt.setString(1, GrantField.getText());

            pSt.execute();

            JOptionPane.showMessageDialog(null, "The Request has been approved");

        } catch (Exception e) {                            
            e.printStackTrace();
        }           
    }
});  

Is it possible to do this?

如有任何帮助,我们将不胜感激。

你的update_query不合适。您在 PreparedStatement 上使用 setString 但您没有指定应该在查询中插入此值的位置(您的查询未参数化)。要指定您需要编写 ?你想插入值的地方。 user 也是数据库中的保留字,因此理想情况下您不应使用此名称。例如:

String update_query = "UPDATE [table_name] SET usertype = seller WHERE email = ?" ;
PreparedStatement preparedStatement = dbConnection.prepareStatement(update_query);
preparedStatement.setString(1,Value);// this value will be replaced at ?

如果您不知道如何从 Java 连接到数据库并创建连接,您需要从以下方面学习:http://docs.oracle.com/javase/tutorial/jdbc/

尝试用单引号将您的文本框值括起来,如下所示:

String update_query = "UPDATE user 
                       SET usertype = 'seller' 
                       WHERE email = '" &  GrantField.getText() & "';"

我也在 getText() 之后添加了一个符号。

您的 sql 查询有问题。

  1. table 名称是 User 它是一个保留字,因此将其括在 ""
  2. 您正在查看电子邮件。它是 varchar,所以它应该包含在 '
  3. 始终尝试使用参数化 sql 查询,这样可以避免 sql 注入问题
  4. 您正在执行 setstring 以将值传递给查询,但在查询中您 未指定应替换值的位置。

    String update_query ="UPDATE "user" SET usertype = 'seller' WHERE email = '" & GrantField.getText()&"';" PreparedStatement pSt = connect.prepareStatement(update_query); //pSt.setString(1, GrantField.getText()); this statement not needed because you are providing the value in query iteself pSt.execute();

String update_query = "UPDATE [user] SET usertype = 'seller' WHERE email = ?" ;
PreparedStatement pSt = dbConnection.prepareStatement(update_query);
pSt.setString(1,GrantField.getText());
pSt.execute();

只修改这部分

String update_query = "UPDATE user SET usertype = 'seller' WHERE ***email = '" + GrantField.getText()+"';***

希望它对你有用。