Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Qu'est-ce que cela signifie lorsque Statement.executeUpdate() renvoie -1 ?

Comme l'instruction exécutée n'est pas réellement DML (par exemple UPDATE , INSERT ou EXECUTE ), mais un morceau de T-SQL qui contient DML, je soupçonne qu'il n'est pas traité comme une requête de mise à jour.

La section 13.1.2.3 de la spécification JDBC 4.1 indique quelque chose (plutôt difficile à interpréter) :

Compte tenu de ces informations, je suppose que executeUpdate() fait en interne un execute() , puis - comme execute() renverra false - il renverra la valeur de getUpdateCount() , qui dans ce cas - conformément à la spécification JDBC - renverra -1 .

Ceci est encore corroboré par le fait 1) que le Javadoc pour Statement.executeUpdate() dit :

Et 2) que le Javadoc pour Statement.getUpdateCount() spécifie :

Juste pour clarifier :étant donné le Javadoc pour executeUpdate() le comportement est probablement mauvais, mais il peut être expliqué.

De plus, comme je l'ai commenté ailleurs, le -1 pourrait simplement indiquer :peut-être que quelque chose a été modifié, mais nous ne savons tout simplement pas, ou nous ne pouvons pas donner un nombre précis de modifications (par exemple, parce que dans cet exemple, il s'agit d'un morceau de T- SQL qui est exécuté).