SQL - Java - UPDATE语句查询

时间:2015-05-31 03:34:02

标签: java sql sql-update

所以我要做的是“更新'user'表WHERE中的'usertype'列,从文本框中获取电子邮件(/ user)值”

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

是否可以这样做?

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:0)

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

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/

答案 1 :(得分:0)

尝试用单引号包装文本框值,如下所示:

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

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

答案 2 :(得分:0)

您的SQL查询存在一些问题。

  1. 表名为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();

  5. OR

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

答案 3 :(得分:0)

只需修改此部分

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

希望它可能适合你。

相关问题