Тъй като изпълненият оператор всъщност не е DML (напр. UPDATE
, INSERT
или EXECUTE
), но част от T-SQL, която съдържа DML, подозирам, че не се третира като заявка за актуализиране.
Раздел 13.1.2.3 от спецификацията JDBC 4.1 посочва нещо (доста трудно за тълкуване между другото):
Като се има предвид тази информация, предполагам, че executeUpdate()
вътрешно прави execute()
и след това - като execute()
ще върне false
- ще върне стойността на getUpdateCount()
, което в този случай - в съответствие със спецификацията на JDBC - ще върне -1
.
Това допълнително се потвърждава от факта, 1), че Javadoc за Statement.executeUpdate()
казва:
И 2) че Javadoc за Statement.getUpdateCount() уточнява:
Само за пояснение:даден Javadoc за executeUpdate()
поведението вероятно е грешно, но може да се обясни.
Освен това, както коментирах другаде, -1 може просто да показва:може би нещо е било променено, но ние просто не знаем или не можем да дадем точен брой промени (напр. защото в този пример това е част от T- SQL, който се изпълнява).