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