Protože provedený příkaz ve skutečnosti není DML (např. UPDATE
, INSERT
nebo EXECUTE
), ale kus T-SQL, který obsahuje DML, mám podezření, že to není považováno za aktualizační dotaz.
Část 13.1.2.3 specifikace JDBC 4.1 něco uvádí (poněkud těžko interpretovatelné, mimochodem):
Vzhledem k těmto informacím předpokládám, že executeUpdate()
interně provede execute()
a poté - jako execute()
vrátí false
- vrátí hodnotu getUpdateCount()
, který v tomto případě - v souladu se specifikací JDBC - vrátí -1
.
To je dále potvrzeno skutečností 1), že Javadoc pro Statement.executeUpdate()
říká:
A 2) že Javadoc pro Statement.getUpdateCount() specifikuje:
Jen pro upřesnění:vzhledem k Javadoc pro executeUpdate()
chování je pravděpodobně špatné, ale lze jej vysvětlit.
Jak jsem také komentoval jinde, -1 může jen naznačovat:možná se něco změnilo, ale prostě nevíme, nebo nemůžeme uvést přesný počet změn (např. protože v tomto příkladu je to kus T- SQL, který je spuštěn).