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