Rumah >Java >javaTutorial >Ralat Sintaks PreparedStatement MySQL: Mengapakah `executeQuery()` Gagal dengan `?` Pemegang tempat?

Ralat Sintaks PreparedStatement MySQL: Mengapakah `executeQuery()` Gagal dengan `?` Pemegang tempat?

Susan Sarandon
Susan Sarandonasal
2024-12-06 07:30:111025semak imbas

MySQL PreparedStatement Syntax Error: Why is `executeQuery()` Failing with `?` Placeholders?

Ralat Sintaks MySQL: Memahami Sintaks PreparedStatement

Kod Java anda menggunakan PreparedStatement untuk melaksanakan pertanyaan menghadapi ralat sintaks MySQL (ralat nombor 1064). Ralat ini biasanya dilemparkan apabila terdapat isu dengan sintaks SQL itu sendiri.

Mengenal pasti Sumber Ralat:

Kod yang disediakan menunjukkan bahawa anda cuba untuk laksanakan pertanyaan yang mengandungi ruang letak yang diwakili oleh "?". MySQL tidak mentafsirkan "?" aksara sebagai pemegang tempat dan sebaliknya menganggapnya sebagai sebahagian daripada pernyataan SQL.

Penyelesaian: Menggunakan Kaedah Argumentless executeQuery()

Untuk menyelesaikan isu, anda perlu menggunakan kaedah executeQuery() pernyataan yang disediakan tanpa menyatakan rentetan pertanyaan sebagai argumen.

PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, 2);
s.setString(2, "zen");
ResultSet rs = s.executeQuery(); // Correct syntax

Dengan meninggalkan rentetan pertanyaan dalam executeQuery(), anda membenarkan pernyataan yang disediakan untuk melaksanakan pertanyaan yang ditakrifkan sebelum ini dengan nilai parameter yang disediakan.

Awas : Kebocoran Sumber

Kod anda pada masa ini tidak mempunyai pengendalian peruntukan sumber yang betul dan deallocation. Adalah disyorkan untuk menggunakan simpulan bahasa JDBC untuk menutup semua sumber yang diperoleh (Sambungan, Penyata, ResultSet) dalam blok akhirnya blok cuba. Jika tidak, aplikasi anda mungkin kehabisan sumber pangkalan data dari semasa ke semasa, membawa kepada ketidakstabilan.

Atas ialah kandungan terperinci Ralat Sintaks PreparedStatement MySQL: Mengapakah `executeQuery()` Gagal dengan `?` Pemegang tempat?. 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