Da den udførte sætning faktisk ikke er DML (f.eks. UPDATE
, INSERT
eller EXECUTE
), men et stykke T-SQL, som indeholder DML, jeg formoder, at det ikke behandles som en opdateringsforespørgsel.
Afsnit 13.1.2.3 i JDBC 4.1-specifikationen siger noget (temmelig svært at fortolke btw):
I betragtning af disse oplysninger, gætter jeg på, at executeUpdate()
internt udfører en execute()
, og derefter - som execute()
returnerer false
- det vil returnere værdien af getUpdateCount()
, som i dette tilfælde - i overensstemmelse med JDBC-specifikationen - vil returnere -1
.
Dette bekræftes yderligere af det faktum 1) at Javadoc for Statement.executeUpdate()
siger:
Og 2) at Javadoc for Statement.getUpdateCount() specificerer:
Bare for at præcisere:givet Javadoc for executeUpdate()
adfærden er sandsynligvis forkert, men den kan forklares.
Som jeg også kommenterede andetsteds, kan -1'en måske bare indikere:måske er noget blevet ændret, men vi ved det simpelthen ikke, eller vi kan ikke give et nøjagtigt antal ændringer (f.eks. fordi det i dette eksempel er et stykke T- SQL, der udføres).