我正试图使用Java 中的以下代码从数据库中删除一条记录
try {
Statement st = db.con.createStatement();
con.stmt = st.executeUpdate("DELETE FROM item, WHERE Name=" + textField_name.getText());
然而,"stmt"(它是我在连接类中初始化的PreparedStatement)带有下划线,代码不会编译。
这是因为executeUpdate
返回一个int
,而con.stmt
可能不是int
变量。
但是,您不应该首先以这种方式编写SQL(由于item
后面的逗号,它无论如何都是无效的)-您应该使用一个准备好的语句:
PreparedStatement st = db.con.prepareStatement("DELETE FROM item WHERE Name=?");
st.setString(1, textField_name.getText());
int rowsDeleted = st.executeUpdate();
这样,您就不会受到SQL注入攻击。
st.executeUpdate()
返回一个int
。
我认为您想要执行con.stmt.executeUpdate()