Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Was bedeutet es, wenn Statement.executeUpdate() -1 zurückgibt?

Da die ausgeführte Anweisung nicht wirklich DML ist (z. B. UPDATE , INSERT oder EXECUTE ), sondern ein Stück T-SQL, das enthält DML, ich vermute, es wird nicht als Update-Abfrage behandelt.

Abschnitt 13.1.2.3 der JDBC 4.1-Spezifikation sagt etwas (übrigens ziemlich schwer zu interpretieren):

Angesichts dieser Informationen schätze ich, dass executeUpdate() führt intern ein execute() aus , und dann - als execute() gibt false zurück - Es wird der Wert von getUpdateCount() zurückgegeben , die in diesem Fall - gemäß der JDBC-Spezifikation - -1 zurückgibt .

Dies wird weiter durch die Tatsache 1) bestätigt, dass das Javadoc für Statement.executeUpdate() sagt:

Und 2) dass das Javadoc für Statement.getUpdateCount() spezifiziert:

Nur zur Verdeutlichung:gegeben das Javadoc für executeUpdate() das Verhalten ist wahrscheinlich falsch, aber es kann erklärt werden.

Wie ich an anderer Stelle kommentiert habe, könnte die -1 auch nur anzeigen:Vielleicht wurde etwas geändert, aber wir wissen es einfach nicht, oder wir können keine genaue Anzahl von Änderungen angeben (z. B. weil es in diesem Beispiel ein Stück T ist). SQL, das ausgeführt wird).