2013-12-11 8 views
5

Il mio codice è molto semplice. ma dopo aver eseguito executeBatch() solo 1 riga entra nel DB.Java ExecuteBatch() inserisce solo 1 riga

Il codice è qui sotto:

//INSIDE LOOP: 
{ 
ps = conn.prepareStatement("INSERT INTO NK_EVENT_DATA VALUES(?,?,?,?,?,?,?); 

// setting bind variable values 
ps.setLong(1, ed_fi_uid); 
ps.setString(2 , ed_date); 
ps.setString(3, ed_hash_key); 
ps.setLong(4 , ed_et_uid); 
ps.setLong(5, ed_etn_uid); 

ps.addBatch(); 
} 
//LOOP ENDS 

ps.executeBatch(); 

Tuttavia, solo un record viene inserito al posto dei 5 record.

+1

Invia il tuo codice completo. – user987339

+1

5? Stai utilizzando 5 variabili nella dichiarazione preparata ma non 5 record ... – PeterMmm

risposta

16

Si sta creando un nuovo PreparedStatement in ogni ciclo. Ad ogni istruzione viene aggiunto solo un batch e solo l'ultima istruzione viene eseguita.

Spostare ps = conn.prepareStatement("INSERT INTO NK_EVENT_DATA VALUES(?,?,?,?,?,?,?); fuori dal ciclo.

+1

Ciao Michael !!! Questo era esattamente il problema !! Ora funziona Bene !! Saluti amico, grazie mille !! Abdullah –

0

Come fai a sapere che devono essere inserite 5 righe?

Affinché ciò accada, devono essere effettuate 5 chiamate al metodo addBatch, che molto probabilmente significa che il codice deve ripetere cinque volte il ciclo. Si prega di verificare se questo sta accadendo.

Inoltre, si ricorda che l'istruzione INSERT si presenta come prevede di inserire dati in 7 colonne, mentre si impostano solo 5 valori di colonna per ogni riga.

-1

Ho avuto lo stesso problema e il problema era un; alla fine della mia stringa di istruzioni preparata. Appena rimosso; dalla corda e ha funzionato.

Problemi correlati