try {
int stupac=tabZaDijagnozu.getSelectedRow();
String T=(tabZaDijag.getModel().getValueAt(stupac,0).toString());
String sql="SELECT *FROM dijagnoze WHERE ID='"+T+"'";
pst=conn.prepareStatement(sql);
rs=pst.executeQuery();
if(rs.next()) {
String id=rs.getString("ID");
String Query = "DELETE *FROM dijagnoze WHERE ID='"+id+"'";
pst=conn.prepareStatement(Query);
pst.setString(1, "ID");
pst.execute();
JOptionPane.showMessageDialog(null, "Deleted!");
}
} catch(Exception e) {
JOptionPane.showMessageDialog(null,e);
}
我试图通过自己查找其他类似的帖子来解决这个问题,但它只是没有用。
答案 0 :(得分:1)
您的SQL中没有任何参数。在您的代码中,您正在构建SQL但附加值
更改为
String Query = "DELETE FROM dijagnoze WHERE ID = ?";
pst=conn.prepareStatement(Query);
pst.setString(1, id);
修改强>
此外,你的选择应至少固定在下面(但使用参数会更安全,以防止SQL注入)
String sql="SELECT * FROM dijagnoze WHERE ID = '" + T + "'";
<强> EDIT2 强>
在您的代码中,您首先根据ID执行select
,然后如果该记录存在,则您正在执行delete
。首先select
没有必要,只需要delete
。