Como a instrução executada não é realmente DML (ex.
UPDATE , INSERT ou EXECUTE ), mas um pedaço de T-SQL que contém DML, suspeito que não seja tratado como uma consulta de atualização. A seção 13.1.2.3 da especificação JDBC 4.1 afirma algo (bastante difícil de interpretar btw):
Dadas essas informações, acho que
executeUpdate() internamente faz um execute() , e então - como execute() retornará false - retornará o valor de getUpdateCount() , que neste caso - de acordo com a especificação JDBC - retornará -1 . Isso é corroborado pelo fato de 1) que o Javadoc para
Statement.executeUpdate()
diz:E 2) que o Javadoc para Statement.getUpdateCount() especifica:
Apenas para esclarecer:dado o Javadoc para
executeUpdate() o comportamento provavelmente está errado, mas pode ser explicado. Além disso, como comentei em outro lugar, o -1 pode apenas indicar:talvez algo tenha sido alterado, mas simplesmente não sabemos ou não podemos fornecer um número preciso de alterações (por exemplo, porque neste exemplo é um pedaço de T- SQL que é executado).