Monday, 15 July 2013

mysql - JDBC UPDATE With preparedStatement causing java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2) -


इस सवाल का पहले से ही एक उत्तर है: < / पी>

  • 3 जवाब

मुझे सामना करना पड़ रहा है java.sql.SQLException: पैरामीटर सीमा से बाहर सूचकांक (3> पैरामीटर की संख्या है, जो 2) 'reset_info' तालिका जो पांच स्तंभ हैं में से एक या दो स्तंभों को अपडेट करते समय (। आईडी, मोबाइल-टावर_आईडी, रीसेट_वल्यू, तारीख_टाइम, क्लीइंट)। 'आईडी' स्वतः उत्पन्न प्राथमिक कुंजी है मैं अद्यतन किसी विशेष पंक्ति की 'reset_value' करना चाहते हैं

अब के बाद स्रोत कोड है:

  Class.forName ( "com.mysql .jdbc.Driver "); System.out.println ("डेटाबेस से कनेक्ट करना ..."); Conn = DriverManager.getConnection (DB_URL, USER, PASS); स्ट्रिंग sql = "UPDATE reset_info SET reset_value =? WHERE आईडी =?"; तैयार किए गए स्थान पीएस = conn.prepareStatement (एसक्यूएल); Ps.setInt (1, 100); Ps.setInt (3, 1000); ps.executeUpdate (); conn.close ();  

और बाद मेरी स्टैकट्रेस है:

  डेटाबेस से कनेक्ट हो रहा ... java.sql.SQLException: पैरामीटर रेंज (3 & gt से बाहर सूचकांक; की संख्या पैरामीटर, जो 2 है)। Com.mysql.jdbc.SQLError.createSQLException पर (SQLError.java:1078) com.mysql.jdbc.SQLError.createSQLException पर (SQLError.java:989) com.mysql.jdbc.SQLError.createSQLException पर (SQLError.java: 975 ) com.mysql.jdbc.SQLError.createSQLException (SQLError.java:920) com.mysql.jdbc.PreparedStatement.checkBounds (PreparedStatement.java:3813) com.mysql.jdbc.PreparedStatement.setInternal पर पर (PreparedStatement.java पर: 3795) com.mysql.jdbc.PreparedStatement.setInternal (PreparedStatement.java:3840) com.mysql.jdbc.PreparedStatement.setInt (PreparedStatement.java:3784) cdot.dsa.cfms.dbconnect.NewClass.main पर पर (NewClass पर जावा: 38)  

यह () तालिका के प्रत्येक स्तंभ के लिए प्लेसहोल्डर डाल करने के लिए

java.sql द्वारा एक एकल स्तंभ अपडेट कर रहा है के लिए अनिवार्य है '?'? .सेटमेंट काम कर रहा है लेकिन मुझे जावा.sql.preparedStatement के साथ अपवाद मिल रहा है।

कृपया मदद करें संकल्पनात्मक विचारों की अत्यधिक सराहना की जाएगी।

यह ps.setInt (3, 1000); < / Code> होना चाहिए ps.setInt (2, 1000); क्योंकि आपको केवल प्लेसहोल्डर ही है।

क्या प्लेसहोल्डर को रखा जाना अनिवार्य है ('?') तालिका के प्रत्येक स्तंभ के लिए?

प्लेसहोल्डर स्तंभ के लिए नहीं एक पैरामीटर के लिए है!


No comments:

Post a Comment