Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Apa artinya ketika Statement.executeUpdate() mengembalikan -1?

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Prioritas kueri dalam MS SQL

  2. Cara memangkas asosiasi duplikat untuk menghasilkan satu set terlengkap yang unik

  3. Membatasi rekursi ke level tertentu - Baris duplikat

  4. Memesan hasil SQL Server dengan klausa IN

  5. Bagaimana cara mengganti nama sesuatu di SQL Server yang memiliki tanda kurung siku di namanya?