MySQL Prepared Statement: Mengatasi Ralat "MySQLSyntaxErrorException"
Apabila menggunakan pernyataan yang disediakan dalam JDBC untuk MySQL, adalah penting dan memastikan sintaks yang betul penggunaan. Satu ralat biasa yang dihadapi oleh pembangun ialah "MySQLSyntaxErrorException." Mari kita terokai contoh khusus ralat ini dan penyelesaian yang sepadan.
Masalah:
Aplikasi berasaskan Java yang menggunakan penyambung MySQL mengalami "MySQLSyntaxErrorException" semasa melaksanakan kenyataan yang disediakan. Kod menggunakan pernyataan berikut untuk mendapatkan semula data:
<code class="java">PreparedStatement stmt = con.prepareStatement(selectSQL); stmt.setInt(1, ad_id); rs = stmt.executeQuery(selectSQL);</code>
Setelah dilaksanakan, ralat dilemparkan.
Mesej Ralat:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1
Penyelesaian:
Ralat terletak dalam sintaks melaksanakan pernyataan yang disediakan. Khususnya, baris berikut adalah salah:
<code class="java">rs = stmt.executeQuery(selectSQL);</code>
Sintaks yang betul untuk melaksanakan pernyataan yang disediakan ialah:
<code class="java">rs = stmt.executeQuery();</code>
Dengan meninggalkan hujah selectSQL daripada kaedah executeQuery, pernyataan itu dilaksanakan dengan betul, dan ralat diselesaikan.
Penjelasan:
Dalam pernyataan yang disediakan, pertanyaan SQL diluluskan semasa penyediaan pernyataan, dan parameter ditetapkan secara berasingan menggunakan kaedah setX (cth., setInt). Kaedah executeQuery digunakan untuk mengambil set hasil, yang harus dipanggil tanpa sebarang hujah. Kod asal tidak memasukkan rentetan pertanyaan SQL dalam panggilan kaedah executeQuery, menyebabkan ralat sintaks.
Atas ialah kandungan terperinci Mengapa Penyata Saya yang Disediakan dalam MySQL JDBC Melemparkan \'MySQLSyntaxErrorException\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!