Database.getConnection()错误 - >参数索引超出范围(1>参数数量,为0)

问题描述:

我开发了一个应用程序,它显示了id,subject,indexno和其他信息。每个字段都有单独的文本框,每当用户填写表单并点击提交按钮时,该值必须插入到我的数据库中。如果我尝试将其提交给数据库,则不会发生任何事情。请看下面的代码。Database.getConnection()错误 - >参数索引超出范围(1>参数数量,为0)

 try { 
      Connection con = null; 
      PreparedStatement pst = null; 
      String id = "", subject = "", indexNo = "", additional = ""; 
      Class.forName("com.mysql.jdbc.Driver").newInstance(); 
      int updateQuery = 0; 
      if (id == null && subject == null && indexNo == null && additional == null) { 
       if (id == "" && subject == " " && indexNo == "" && additional == "") { 

        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "KUMAR"); 

        String query="insert into circularindex(id,subject,indexNo,additional)values(?,?,?,?)"; 
        pst = con.prepareStatement(query); 

        pst.setString(1, id); 
        pst.setString(1, subject); 
        pst.setString(2, indexNo); 
        pst.setString(3, additional); 
        pst.executeUpdate(); 
       } 
      } 
     } catch (Exception ex) { 
      System.out.println("Database.getConnection() Error -->" + ex.getMessage()); 
     } 

请帮我解决上面的编码错误,并做好必要的工作。

似乎当你设置的参数就像是一个错字:

pst.setString(1, id); 
pst.setString(1, subject); 
pst.setString(2, indexNo); 
pst.setString(3, additional); 

你被覆盖其他设置第一个参数的两倍。你应该这样做,就像

pst.setString(1, id); 
pst.setString(2, subject); 
pst.setString(3, indexNo); 
pst.setString(4, additional); 
+0

感谢您的快速反应,但即使我也尝试过。它仍然没有工作。 – Jeevetha

+0

它解决了还是你得到了一些其他异常? – SMA

+0

还没有我得到相同的错误 – Jeevetha

似乎有一个错字已经被almas指出。如果它仍然存在,尝试添加它没有主键(以防万一它是一个汽车发电机组):

String query="insert into circularindex(id,subject,indexNo,additional) values (?,?,?)"; 
pst = con.prepareStatement(query); 

pst.setString(1, subject); 
pst.setString(2, indexNo); 
pst.setString(3, additional); 

pst.executeUpdate(); 

你有一些冲突的if语句。第一个测试是所有输入都是空的,然后嵌套的if测试是否全部为空。他们不能兼而有之。

我删除了两个if语句,并为setString参数硬编码了一些值。代码起作用。

您想要将空字符串插入数据库似乎不合逻辑。我想你想确定他们是不是 null和不是空。

更改if语句,以便它们测试非null且不为空,向所有四个字符串添加一些值,并且您应该能够访问数据库。