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