Poiché l'istruzione eseguita non è effettivamente DML (ad esempio UPDATE
, INSERT
o EXECUTE
), ma un pezzo di T-SQL che contiene DML, sospetto che non sia trattata come una query di aggiornamento.
La sezione 13.1.2.3 della specifica JDBC 4.1 afferma qualcosa (piuttosto difficile da interpretare tra l'altro):
Date queste informazioni, suppongo che executeUpdate()
esegue internamente un execute()
, e poi - come execute()
restituirà false
- restituirà il valore di getUpdateCount()
, che in questo caso, secondo le specifiche JDBC, restituirà -1
.
Ciò è ulteriormente corroborato dal fatto 1) che Javadoc per Statement.executeUpdate()
dice:
E 2) che il Javadoc per Statement.getUpdateCount() specifica:
Giusto per chiarire:dato il Javadoc per executeUpdate()
il comportamento è probabilmente sbagliato, ma può essere spiegato.
Inoltre, come ho commentato altrove, il -1 potrebbe semplicemente indicare:forse qualcosa è stato cambiato, ma semplicemente non lo sappiamo, oppure non possiamo fornire un numero preciso di modifiche (ad esempio perché in questo esempio è un pezzo di T- SQL che viene eseguito).