Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Điều đó có nghĩa là gì khi Statement.executeUpdate () trả về -1?

Vì câu lệnh được thực thi thực sự không phải là DML (ví dụ:UPDATE , INSERT hoặc EXECUTE ), nhưng một đoạn T-SQL chứa DML, tôi nghi ngờ nó không được coi là một truy vấn cập nhật.

Phần 13.1.2.3 của đặc tả JDBC 4.1 nêu một điều gì đó (khá khó để giải thích btw):

Với thông tin này, tôi đoán rằng executeUpdate() nội bộ thực hiện một execute() , và sau đó - dưới dạng execute() sẽ trả về false - nó sẽ trả về giá trị của getUpdateCount() , trong trường hợp này - phù hợp với thông số JDBC - sẽ trả về -1 .

Điều này càng được chứng thực bởi thực tế 1) rằng Javadoc cho Statement.executeUpdate() nói:

Và 2) Javadoc cho Statement.getUpdateCount () chỉ định:

Chỉ cần làm rõ:đã cung cấp Javadoc cho executeUpdate() hành vi có thể là sai, nhưng nó có thể được giải thích.

Ngoài ra, như tôi đã nhận xét ở nơi khác, -1 có thể chỉ cho biết:có thể một cái gì đó đã được thay đổi, nhưng chúng tôi chỉ đơn giản là không biết hoặc chúng tôi không thể đưa ra con số thay đổi chính xác (ví dụ như trong ví dụ này, nó là một phần của T- SQL được thực thi).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo bảng SQL từ kết hợp dữ liệu

  2. Làm cách nào để chèn vào bảng chỉ định giá trị DEFAULT cho mọi cột?

  3. @@ IDENTITY, SCOPE_IDENTITY (), OUTPUT và các phương pháp truy xuất danh tính cuối cùng khác

  4. Hệ thống phân cấp công nghệ bộ nhớ / lưu trữ và SQL Server

  5. SQL Server:Chèn kết quả thủ tục được lưu trữ vào bảng dựa trên các tham số