Rumah >pangkalan data >tutorial mysql >Mengapa Penyata Saya yang Disediakan dalam MySQL JDBC Melemparkan \'MySQLSyntaxErrorException\'?

Mengapa Penyata Saya yang Disediakan dalam MySQL JDBC Melemparkan \'MySQLSyntaxErrorException\'?

Barbara Streisand
Barbara Streisandasal
2024-10-31 00:48:29451semak imbas

Why Does My Prepared Statement in MySQL JDBC Throw a

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!

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