Aangezien de uitgevoerde instructie niet echt DML is (bijv. UPDATE , INSERT of EXECUTE ), maar een stukje T-SQL dat bevat DML, ik vermoed dat het niet wordt behandeld als een update-query.
In paragraaf 13.1.2.3 van de JDBC 4.1-specificatie staat iets (nogal moeilijk te interpreteren trouwens):
Gezien deze informatie, denk ik dat executeUpdate() doet intern een execute() , en dan - as execute() retourneert false - het retourneert de waarde van getUpdateCount() , die in dit geval - in overeenstemming met de JDBC-specificatie - -1 . teruggeeft .
Dit wordt verder bevestigd door het feit 1) dat de Javadoc voor Statement.executeUpdate()
zegt:
En 2) dat de Javadoc voor Statement.getUpdateCount() specificeert:
Even ter verduidelijking:gezien de Javadoc voor executeUpdate() het gedrag is waarschijnlijk verkeerd, maar het kan worden verklaard.
Ook zoals ik elders opmerkte, kan de -1 alleen maar aangeven:misschien is er iets veranderd, maar we weten het gewoon niet, of we kunnen geen nauwkeurig aantal wijzigingen geven (bijvoorbeeld omdat het in dit voorbeeld een stuk T- is SQL die wordt uitgevoerd).