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