Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

java.sql.SQLException Indeks parameter di luar rentang (1> jumlah parameter, yaitu 0)

Anda akan mendapatkan kesalahan ini saat Anda memanggil salah satu setXxx() metode pada PreparedStatement , sedangkan string kueri SQL tidak memiliki tempat penampung ? untuk ini.

Misalnya ini salah :

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);

Anda perlu memperbaiki string kueri SQL yang sesuai untuk menentukan placeholder.

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);

Perhatikan indeks parameter dimulai dengan 1 dan Anda tidak perlu mengutip placeholder tersebut seperti ini:

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

Jika tidak, Anda masih akan mendapatkan pengecualian yang sama, karena pengurai SQL kemudian akan menafsirkannya sebagai nilai string yang sebenarnya dan dengan demikian tidak dapat menemukan placeholder lagi.

Lihat juga:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL - Perbarui banyak catatan dalam satu kueri

  2. Bagaimana saya tahu kapan wadah mysql buruh pelabuhan saya habis dan mysql siap untuk menerima kueri?

  3. Hapus dari dua tabel dalam satu kueri

  4. Tabel pivot dinamis MySQL

  5. Menyiapkan Koneksi Database MySQL Jarak Jauh