Anda salah memahami nilai kembalian PreparedStatement#execute()
.
Harap hati-hati membaca javadoc:
Pengembalian:
true
jika hasil pertama adalahResultSet
obyek;false
jika hasil pertama adalah hitungan pembaruan atau tidak ada hasil.
Dengan demikian mengembalikan — seperti yang diharapkan sepenuhnya — false
pada INSERT
pertanyaan. Ini hanya mengembalikan true
pada SELECT
kueri (yang biasanya Anda ingin gunakan executeQuery()
sebagai gantinya yang mengembalikan secara langsung ResultSet
).
Jika Anda tertarik dengan baris yang terpengaruh, gunakan PreparedStatement#executeUpdate()
sebagai gantinya. Ini mengembalikan int
sesuai javadoc:
Pengembalian:
baik (1) jumlah baris untuk pernyataan SQL Data Manipulation Language (DML) atau (2) 0 untuk pernyataan SQL yang tidak menghasilkan apa-apa
Nilai kembalian 1 atau lebih besar akan menunjukkan penyisipan yang berhasil.
Tidak terkait untuk masalah konkret:kode Anda membocorkan sumber daya DB. Harap baca dengan cermat Seberapa sering Connection, Statement, dan ResultSet harus ditutup di JDBC?