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