Mengapa Kod Java Saya Mendapat Pengecualian MySQLSyntaxError Walaupun Menggunakan PreparedStatement?

Susan Sarandon
Lepaskan: 2024-10-31 00:35:30
asal
255 orang telah melayarinya

Why Does My Java Code Get a MySQLSyntaxError Exception Despite Using a PreparedStatement?

JDBC Mengembalikan Pengecualian MySQLSyntaxError Walaupun Penyataan Betul

Apabila cuba memasukkan baris baharu ke dalam jadual MySQL, aplikasi Java menemui Pengecualian MySQLSyntaxError Exception. Setelah meneliti pernyataan SQL, ia kelihatan betul dari segi sintaksis. Walau bagaimanapun, apabila dilaksanakan secara terus menggunakan MySQL Workbench, pernyataan itu berjaya.

Kod yang dimaksudkan menggunakan PreparedStatement untuk melaksanakan pernyataan INSERT, seperti yang dilihat di bawah:

<code class="java">PreparedStatement sInserim = conn.prepareStatement(sqlCommandInserim);
sInserim.setString(1, utente);
sInserim.setString(2, nome);
sInserim.executeUpdate(sqlCommandInserim);</code>
Salin selepas log masuk

Pengecualian yang dihadapi ialah:

<code class="text">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 '? , ? , DEFAULT , NULL )' at line 1</code>
Salin selepas log masuk

Setelah diperiksa lebih dekat, didapati bahawa pemegang tempat (?) tidak digantikan dengan betul oleh PreparedStatement. Ini terbukti daripada baris berikut:

<code class="java">sInserim.executeUpdate(sqlCommandInserim);</code>
Salin selepas log masuk

Kaedah executeUpdate() sedang digunakan dengan rentetan SQL mentah sebagai argumen, dan bukannya menggunakan objek PreparedStatement dengan nilai yang ditetapkan.

Untuk membetulkan isu, kod telah diubah suai kepada:

<code class="java">sInserim.executeUpdate();</code>
Salin selepas log masuk

Dengan menggunakan executeUpdate() tanpa argumen rentetan SQL, nilai PreparedStatement digunakan secara automatik, menyelesaikan Pengecualian MySQLSyntaxError.

Nota:

Walaupun tidak berkaitan secara langsung dengan masalah yang dinyatakan, adalah disyorkan untuk menutup PreparedStatement (dan sebarang sumber lain, seperti Connection, Statement dan ResultSet) dalam blok akhirnya ke mengelakkan kebocoran sumber sekiranya berlaku pengecualian.

Atas ialah kandungan terperinci Mengapa Kod Java Saya Mendapat Pengecualian MySQLSyntaxError Walaupun Menggunakan PreparedStatement?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!