当用户在删除字段中输入错误的ID时,我想要弹出一个错误.但即使输入了错误的ID,查询仍会继续,但不会删除任何数据.这是我的代码:
String value = jTextField19.getText();
if (value == null || "".equals(value)) {
JOptionPane.showMessageDialog(null, "The field is blank!");
} else {
theQuery("DELETE FROM inventorydb WHERE item_id=('"+jTextField19.getText()+"') AND item_id IS NOT NULL");
}
Run Code Online (Sandbox Code Playgroud)
该theQuery方法:
private void theQuery(String query) {
Connection con = null;
Statement st = null;
try {
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/inventory", "root", "");
st = con.createStatement();
st.executeUpdate(query);
JOptionPane.showMessageDialog(null, "Done!");
} catch (Exception ex) {
JOptionPane.showMessageDialog(null,"Error!");
}
}
Run Code Online (Sandbox Code Playgroud)
mes*_*azs 11
首先:不要过直接从用户输入建立SQL查询,使用准备好的语句来代替.如果你不了解SQL注入,你应该.
如果您使用的是JDBC,则可以检查结果#executeUpdate()以查看受影响的行数.如果它是零,那么你可以说它是错的id.
这是方法定义:
public int executeUpdate(java.lang.String sql)
Run Code Online (Sandbox Code Playgroud)
返回值为:
一个
int表示受影响的行数,或者0是否使用DDL语句.
在手头的程序中,您可以简单地执行此操作:
int deleted = st.executeUpdate(query);
if (deleted == 0) {
JOptionPane.showMessageDialog(null, "Nothing to delete!");
return;
}
Run Code Online (Sandbox Code Playgroud)