sql >> Database >  >> RDS >> Sqlserver

Wat betekent het als Statement.executeUpdate() -1 retourneert?

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



  1. Dubbele kolomnaamfout krijgen in Django zonder duidelijke reden

  2. Oracle Forms 6i crasht met 0xC0000005 bij het opstarten na installatie van patch 19

  3. Waarom probeert rails verbinding te maken met mysql?

  4. Waarom wordt mysql_escape_string ten zeerste afgeraden?