Karena pernyataan yang dieksekusi sebenarnya bukan DML (mis. UPDATE
, INSERT
atau EXECUTE
), tetapi sepotong T-SQL yang berisi DML, saya menduga ini tidak diperlakukan sebagai kueri pembaruan.
Bagian 13.1.2.3 dari spesifikasi JDBC 4.1 menyatakan sesuatu (agak sulit untuk ditafsirkan btw):
Dengan informasi ini, saya kira executeUpdate()
secara internal melakukan execute()
, dan kemudian - sebagai execute()
akan mengembalikan false
- itu akan mengembalikan nilai getUpdateCount()
, yang dalam hal ini - sesuai dengan spesifikasi JDBC - akan mengembalikan -1
.
Ini lebih lanjut dikuatkan oleh fakta 1) bahwa Javadoc untuk Statement.executeUpdate()
mengatakan:
Dan 2) bahwa Javadoc untuk Pernyataan.getUpdateCount() menentukan:
Hanya untuk memperjelas:diberikan Javadoc untuk executeUpdate()
perilakunya mungkin salah, tapi bisa dijelaskan.
Juga seperti yang saya komentari di tempat lain, -1 mungkin hanya menunjukkan:mungkin ada sesuatu yang diubah, tetapi kami tidak tahu, atau kami tidak dapat memberikan jumlah perubahan yang akurat (misalnya karena dalam contoh ini itu adalah bagian dari T- SQL yang dieksekusi).