所以我要做的是“更新'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();
}
}
});
是否可以这样做?
任何帮助将不胜感激。
答案 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查询存在一些问题。
User
,它是一个保留字,因此请将其括在“”'
您正在使用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();
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()+"';***
希望它可能适合你。