Il jdbc-spec ha quanto segue da dire sul codice di ritorno degli aggiornamenti batch:
■ 0 o superiore:il comando è stato elaborato correttamente e il valore è un conteggio degli aggiornamenti che indica il numero di righe nel database interessate dall'esecuzione del comando Capitolo 14 Aggiornamenti batch 121
■ Statement.SUCCESS_NO_INFO:il comando è stato elaborato correttamente, ma il numero di righe interessate è sconosciuto
Statement.SUCCESS_NO_INFO è definito come -2, quindi il tuo risultato dice che tutto ha funzionato bene, ma non otterrai informazioni sul numero di colonne aggiornate.
La documentazione dell'oracolo afferma:
•Per un batch di istruzioni preparato, non è possibile conoscere il numero di righe interessate nel database da ogni singola istruzione nel batch. Pertanto, tutti gli elementi dell'array hanno un valore di -2. Secondo la specifica JDBC 2.0, un valore di -2 indica che l'operazione è riuscita ma il numero di righe interessate è sconosciuto.
•Per un batch di istruzioni generiche, la matrice contiene i conteggi di aggiornamento effettivi che indicano il numero di righe interessate da ciascuna operazione. I conteggi effettivi degli aggiornamenti possono essere forniti solo nel caso di istruzioni generiche nell'implementazione Oracle del batching standard.
•Per un batch di istruzioni richiamabili, il server restituisce sempre il valore 1 come conteggio degli aggiornamenti, indipendentemente dal numero di righe interessate da ciascuna operazione.
Quindi sembra che se hai bisogno dei conteggi degli aggiornamenti non puoi usare PreparedStatement
s ma devono tornare alla semplice Statement
s.