Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Co to znaczy, gdy Statement.executeUpdate() zwraca -1?

Ponieważ wykonywana instrukcja nie jest w rzeczywistości DML (np. UPDATE , INSERT lub EXECUTE ), ale fragment T-SQL, który zawiera Podejrzewam, że DML nie jest traktowane jako zapytanie o aktualizację.

Sekcja 13.1.2.3 specyfikacji JDBC 4.1 mówi coś (raczej trudne do zinterpretowania przy okazji):

Biorąc pod uwagę te informacje, przypuszczam, że executeUpdate() wewnętrznie wykonuje execute() , a następnie - jako execute() zwróci false - zwróci wartość getUpdateCount() , który w tym przypadku - zgodnie ze specyfikacją JDBC - zwróci -1 .

Potwierdza to dodatkowo fakt 1), że dokument Javadoc dla Statement.executeUpdate() mówi:

Oraz 2) że dokumentacja Java dla Statement.getUpdateCount() określa:

Dla wyjaśnienia:biorąc pod uwagę Javadoc dla executeUpdate() zachowanie jest prawdopodobnie niewłaściwe, ale można to wyjaśnić.

Również jak skomentowałem w innym miejscu, -1 może po prostu wskazywać:może coś się zmieniło, ale po prostu nie wiemy, lub nie możemy podać dokładnej liczby zmian (np. ponieważ w tym przykładzie jest to kawałek T- wykonywany SQL).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Prosta próbka Pivot

  2. Jak utworzyć procedurę składowaną w SQL Server

  3. Prosta składnia:wiele ograniczeń w instrukcji Alter Table

  4. W jaki sposób strefa czasowa jest obsługiwana w cyklu życia kolumny DateTime ADO.NET + SQL Server?

  5. Napraw uszkodzoną bazę danych SQL podczas problemu z uaktualnieniem