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