java sql SQLException:参数索引超出范围(1>参数个数,即0)!

时间:2017-02-03 00:31:33

标签: java mysql jdbc

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);
}

我试图通过自己查找其他类似的帖子来解决这个问题,但它只是没有用。

1 个答案:

答案 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