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