sql >> Base de Datos >  >> RDS >> Sqlserver

¿Qué significa cuando Statement.executeUpdate() devuelve -1?

Como la instrucción ejecutada no es en realidad DML (p. ej., UPDATE , INSERT o EXECUTE ), sino una pieza de T-SQL que contiene DML, sospecho que no se trata como una consulta de actualización.

La sección 13.1.2.3 de la especificación JDBC 4.1 establece algo (bastante difícil de interpretar por cierto):

Dada esta información, supongo que executeUpdate() internamente hace un execute() , y luego - como execute() devolverá false - devolverá el valor de getUpdateCount() , que en este caso, de acuerdo con la especificación JDBC, devolverá -1 .

Esto se corrobora aún más por el hecho 1) de que el Javadoc para Statement.executeUpdate() dice:

Y 2) que el Javadoc para Declaración.getUpdateCount() especifica:

Solo para aclarar:dado el Javadoc para executeUpdate() el comportamiento probablemente sea incorrecto, pero se puede explicar.

Además, como comenté en otro lugar, el -1 podría indicar:tal vez algo cambió, pero simplemente no lo sabemos, o no podemos dar una cantidad precisa de cambios (por ejemplo, porque en este ejemplo es una pieza de T- SQL que se ejecuta).