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 查询有问题。
- table 名称是
User
它是一个保留字,因此将其括在 "" 中
- 您正在查看电子邮件。它是 varchar,所以它应该包含在
'
中
- 始终尝试使用参数化 sql 查询,这样可以避免 sql 注入问题
您正在执行 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()+"';***
希望它对你有用。
所以我想做的是"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 查询有问题。
- table 名称是
User
它是一个保留字,因此将其括在 "" 中
- 您正在查看电子邮件。它是 varchar,所以它应该包含在
'
中
- 始终尝试使用参数化 sql 查询,这样可以避免 sql 注入问题
您正在执行 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()+"';***
希望它对你有用。