Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java sql SQLException:参数索引超出范围(1>参数数,为0)!_Java_Mysql_Jdbc - Fatal编程技术网

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

java sql SQLException:参数索引超出范围(1>参数数,为0)!,java,mysql,jdbc,Java,Mysql,Jdbc,我试图通过查看其他类似的帖子来解决这个问题,但没有成功。您的SQL中没有任何参数。在您的代码中,您正在构建SQL,但在附加值 改为 try { int stupac=tabZaDijagnozu.getSelectedRow(); String T=(tabZaDijag.getModel().getValueAt(stupac,0).toString()); String sql="SELECT *FROM dijagnoze WHERE ID='"+T+"'";

我试图通过查看其他类似的帖子来解决这个问题,但没有成功。

您的SQL中没有任何参数。在您的代码中,您正在构建SQL,但在附加值

改为

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

此外,您的select应该至少固定为以下值,但使用参数可以更安全地防止sql注入

String Query = "DELETE FROM dijagnoze WHERE ID = ?";
pst=conn.prepareStatement(Query);
pst.setString(1, id);
编辑2


在代码中,首先根据id进行选择,然后如果该记录存在,则执行删除。不必先选择,只需删除即可。

错误是什么?
String sql="SELECT * FROM dijagnoze WHERE ID = '" + T + "'";