Java代码未使用SQL语句进行编译



我正试图使用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()

相关内容

最新更新