Rumah >pangkalan data >tutorial mysql >Mengapa Kod Java Saya Membuang Pengecualian SQL 'Indeks Parameter Di Luar Julat'?

Mengapa Kod Java Saya Membuang Pengecualian SQL 'Indeks Parameter Di Luar Julat'?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-27 00:48:17666semak imbas

Why Does My Java Code Throw a

Indeks Parameter Di Luar Julat dalam Pengecualian SQL: Punca dan Penyelesaian

Menghadapi pengecualian "java.sql.SQLException: Indeks parameter daripada julat (1 > bilangan parameter, iaitu 0)" semasa memasukkan pangkalan data boleh mengecewakan. Ralat ini berlaku apabila anda cuba menetapkan nilai parameter dalam pernyataan yang disediakan manakala pertanyaan SQL tidak mempunyai ruang letak yang sepadan (?) untuk parameter tersebut.

Punca Ralat:

Ralat ini timbul apabila anda cuba menggunakan kaedah setXxx() pada PreparedStatement, tetapi rentetan pertanyaan SQL tidak mempunyai ruang letak yang diperlukan untuk yang ditentukan indeks parameter.

Contoh Kod Salah:

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

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

Penyelesaian:

Untuk menyelesaikan isu ini, anda perlu untuk mengubah suai rentetan pertanyaan SQL untuk memasukkan ruang letak (?) untuk semua parameter yang anda ingin lakukan set.

Contoh Kod Dibetulkan:

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

Nota:

  • Indeks parameter bermula dari 1 .
  • Anda harus mengelak daripada menggunakan petikan tunggal atau berganda di sekeliling ruang letak. Melakukannya akan menyebabkan penghurai SQL mentafsirkannya sebagai nilai rentetan, yang membawa kepada pengecualian yang sama.

Maklumat Tambahan:

  • [Tutorial JDBC - Bersedia Penyata](https://docs.oracle.com/javase/7/docs/technotes/guides/jdbc/index.html#prepared)

Atas ialah kandungan terperinci Mengapa Kod Java Saya Membuang Pengecualian SQL 'Indeks Parameter Di Luar Julat'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn