sql >> Database teknologi >  >> RDS >> Sqlserver

Hvad betyder det, når Statement.executeUpdate() returnerer -1?

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



  1. Fix Error Msg 4151 "Typen af ​​det første argument til NULLIF kan ikke være NULL konstanten, fordi typen af ​​det første argument skal være kendt" i SQL Server

  2. Kildekode for det eksisterende objekt i Oracle

  3. Automatiser databasetestgendannelse i SQL Server

  4. Devise Admin Rolle:PG::Fejl:FEJL:Relationsadministratorer findes allerede