Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Cosa significa quando Statement.executeUpdate() restituisce -1?

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