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