2014-12-26 88 views
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()); 
     } 

請幫我解決上面的編碼錯誤,並做好必要的工作。

回答

0

似乎當你設置的參數就像是一個錯字:

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

0

似乎有一個錯字已經被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(); 
0

你有一些衝突的if語句。第一個測試是所有輸入都是空的,然後嵌套的if測試是否全部爲空。他們不能兼而有之。

我刪除了兩個if語句,併爲setString參數硬編碼了一些值。代碼起作用。

您想要將空字符串插入數據庫似乎不合邏輯。我想你想確定他們是不是 null和不是空。

更改if語句,以便它們測試非null且不爲空,向所有四個字符串添加一些值,並且您應該能夠訪問數據庫。

相關問題