Eftersom den körda satsen faktiskt inte är DML (t.ex. UPDATE
, INSERT
eller EXECUTE
), men en bit av T-SQL som innehåller DML, jag misstänker att det inte behandlas som en uppdateringsfråga.
Avsnitt 13.1.2.3 i JDBC 4.1-specifikationen säger något (ganska svårt att tolka btw):
Med tanke på denna information antar jag att executeUpdate()
internt gör en execute()
, och sedan - som execute()
returnerar false
- det returnerar värdet på getUpdateCount()
, som i det här fallet - i enlighet med JDBC-specifikationen - returnerar -1
.
Detta bekräftas ytterligare av det faktum 1) att Javadoc för Statement.executeUpdate()
säger:
Och 2) att Javadoc för Statement.getUpdateCount() anger:
Bara för att förtydliga:givet Javadoc för executeUpdate()
beteendet är förmodligen fel, men det kan förklaras.
Som jag också kommenterade på andra ställen, kan -1 bara indikera:kanske något har ändrats, men vi vet helt enkelt inte, eller så kan vi inte ge ett exakt antal ändringar (t.ex. för att det i det här exemplet är en del av T- SQL som exekveras).