Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

java.sql.SQLException पैरामीटर सूचकांक सीमा से बाहर है (1> मापदंडों की संख्या, जो 0 है)

जब आप किसी setXxx() . पर कॉल करेंगे तो आपको यह त्रुटि मिलेगी PreparedStatement . पर तरीके , जबकि SQL क्वेरी स्ट्रिंग में कोई प्लेसहोल्डर नहीं है ? इसके लिए।

उदाहरण के लिए यह गलत है :

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (val1, val2, val3)";
// ...

preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, val1); // Fail.
preparedStatement.setString(2, val2);
preparedStatement.setString(3, val3);

प्लेसहोल्डर्स को निर्दिष्ट करने के लिए आपको तदनुसार SQL क्वेरी स्ट्रिंग को ठीक करने की आवश्यकता है।

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (?, ?, ?)";
// ...

preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, val1);
preparedStatement.setString(2, val2);
preparedStatement.setString(3, val3);

ध्यान दें कि पैरामीटर इंडेक्स 1 से शुरू होता है और यह कि आप नहीं . करते हैं उन प्लेसहोल्डर्स को इस तरह उद्धृत करने की आवश्यकता है:

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES ('?', '?', '?')";

अन्यथा आप अभी भी वही अपवाद प्राप्त करेंगे, क्योंकि SQL पार्सर तब उन्हें वास्तविक स्ट्रिंग मानों के रूप में व्याख्या करेगा और इस प्रकार प्लेसहोल्डर को अब और नहीं ढूंढ सकता है।

यह भी देखें:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सबटाइम () उदाहरण – MySQL

  2. मुझे अपने विंडोज़ कंप्यूटर पर my.cnf नहीं मिल रहा है

  3. एक ही मशीन पर एकाधिक MySQL इंस्टेंस कैसे चलाएं

  4. MySQL आप एकाधिक पंक्तियों को वापस करने वाली एक चयन सबक्वायरी वाली तालिका में कैसे सम्मिलित होते हैं?

  5. MySQL ड्रॉप कॉलम