java - sort - libreria arraylist




Come utilizzare un arraylist come parametro di istruzione preparato (3)

@JulienD Il modo migliore è rompere il processo sopra in due fasi.

Passo 1: Diciamo 'rawList' come lista da aggiungere come parametri nell'istruzione preparata.

Crea un altro elenco:

ArrayList<String> listWithQuotes = new ArrayList<String>();

for(String element : rawList){
    listWithQuotes.add("'"+element+"'");
}

Passaggio 2 : imposta la virgola "listWithQuotes" separata.

String finalString = StringUtils.join(listWithQuotes.iterator(),",");

'finalString' sarà un parametro stringa con ogni elemento come quotato singolo e separato da virgola.

Questa domanda ha già una risposta qui:

Ho osservato e non sono stato in grado di trovare una risposta alla seguente sfida che sto affrontando. Sembra piuttosto semplice ma non sono stato in grado di risolverlo.

Ho un ArrayList di ID record che sono di tipo Long -> ArrayList<Long> . Vorrei utilizzare questo elenco di ID record per selezionare le righe da un'altra tabella. Fin qui tutto bene. Ora sulla sfida ...

a) Sto usando una dichiarazione preparata per selezionare i dati da una tabella usando ArrayList come input per questo.

selectPS = dbConnection.prepareStatement("select columnA from tableA where id in ?");

Domanda su quanto sopra: come deve essere definito il parametro? Quanto sopra non sembra corretto per un parametro di tipo ArrayList .

b) Sto anche incontrando problemi durante l'impostazione del valore del parametro per l'istruzione preparata. Non esiste un metodo per impostare un valore di tipo ArrayList e non vedo altre opzioni valide.

---> selectPS.set?????(1, arraylistParameter);
     ResultSet rs = selectPS.executeQuery(); 

Ogni aiuto o direzione in cui mi puoi iscrivere è molto apprezzato.

Grazie.


Se hai ArrayList, converti in Array [Object]

ArrayList<String> list = new ArrayList<String>();
PreparedStatement pstmt = 
            conn.prepareStatement("select * from employee where id in (?)");
Array array = conn.createArrayOf("VARCHAR", list.toArray());
pstmt.setArray(1, array);
ResultSet rs = pstmt.executeQuery();

perché rendere la vita difficile

PreparedStatement pstmt = conn.prepareStatement("select * from employee where id in ("+ StringUtils.join(arraylistParameter.iterator(),",") +)");




prepared-statement