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).