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
Lepaskan: 2024-10-31 00:48:29
asal
453 orang telah melayarinya

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>
Salin selepas log masuk

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
Salin selepas log masuk

Penyelesaian:

Ralat terletak dalam sintaks melaksanakan pernyataan yang disediakan. Khususnya, baris berikut adalah salah:

<code class="java">rs = stmt.executeQuery(selectSQL);</code>
Salin selepas log masuk

Sintaks yang betul untuk melaksanakan pernyataan yang disediakan ialah:

<code class="java">rs = stmt.executeQuery();</code>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan