sql >> Databasteknik >  >> RDS >> Sqlserver

Vad betyder det när Statement.executeUpdate() returnerar -1?

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



  1. Hur flyttar man kolumner i en MySQL-tabell?

  2. sqlplus - använder en bindningsvariabel i IN-satsen

  3. Versaler av personnamn i programmering

  4. PHP - Azure mySQL i appen ändrade portar slumpmässigt