2012-01-09 7 views
9

prego mi dite quale fuori dei due metodi, executeUpdate e eseguire è il migliore per una query di inserimento, come insert into users(name, addr, city, sex, dob) values(?,?,?,?,?); Sia le dichiarazioni avrebbero eseguire la query, ma quale dovrebbe essere utilizzato in posizione ideale per una query di inserimento?Cosa usare: executeUpdate() o execute()?

+0

possibile duplicato di [PreparedStatement in esecuzione correttamente in oracle ma lancio di un'eccezione in Microsoft SQL] (http://stackoverflow.com/questions/8786911/preparedstatement-executing-successfully-in-oracle-but-throwing-exception-in- mic) – axtavt

+0

Hai letto la javadoc per ognuno? La risposta è lì dentro. – skaffman

risposta

14

Il valore restituito è diverso. ExecuteUpdate() restituisce il numero di righe aggiornate, che può essere utile quando si esegue un'istruzione di aggiornamento. Nel tuo caso non è necessario, dal momento che sai quanti record stai inserendo. Puoi usare uno dei due.

+0

Quindi non ci sono vantaggi in quanto tali nell'usare uno dei due giusto? In questo caso non importa quale metodo è usato giusto? –

+0

Giusto. Non importa. – Sjoerd

+0

Ok. Grazie mille :) –

2

In linea di principio, solo il valore restituito è diverso. Tuttavia, ho scoperto che usando jConnect 3 per accedere a Sybase ASE 15.7, la funzione execute() non si blocca fino a quando i trigger non sono stati eseguiti e chiudendo subito il PreparedStatement ROLL BACK l'aggiornamento. (L'inserimento di una sospensione di 1 fa lo fa funzionare per una query che ho provato.) Al contrario, executeUpdate() non soffre di questo problema; sembra fare la cosa giusta e non richiede un sonno arbitrario prima di chiudere il PreparedStatement.