Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    258

    Delucidazioni su transazioni..

    Salve ragazzi,
    avrei bisogno di un aiuto teorico e uno pratico riguardo le transazioni in java.
    Premetto che devo realizzare un'applicazione web in jsf che serve per l'archiviazione di un esperimento in un db.
    L'esperimento viene inserito tramite diverse pagine di form,ognuna delle quali dà origine ad un prepared statement.
    Il mio obiettivo è collezionarli tutti in un arraylist ed eseguirli in una sola volta,sfruttando le transazioni,per evitare inconsistenza dei dati.
    Ecco le mie domande:

    1)E' possibile sfruttare le transazioni con i prepared statement?
    Lo chiedo perchè in giro ho visto esempi solo su statement..
    (scusate la banalità)

    2) Se vale la prima,come posso memorizzare un prepared statement in un arraylist?

    Ho cominciato col creare una classe QueryManager e un arrayList transaction...
    potete dare uno sguardo al mio codice e darmi qualche consiglio su come memorizzare un prepared statement collezionato da un bean dell'applicazione?
    Cioè se in un bean details ho

    codice:
    PreparedStatement pst2 = null;
    pst2 = conn.prepareStatement("INSERT INTO  esperimento(id_,username,nometeam)	 VALUES(?,?,?)");
    							
    pst2.setString(1, id);
    pst2.setString(2, username);
    pst2.setString(3, nometeam);
    pst2.executeUpdate();
    come passo questo prepared statement all'arrayList transaction?
    Vi prego datemi una mano a capire e risolvere i miei dubbi,grazie.

  2. #2
    risposte...
    1)la transazione è una funzione indipendente da java, ma riguarda il dbms! assicurati che il dbms sia in grado di accettare transazioni. io non ho usato prepared statement con le transazioni, ma non penso ci siano problemi, stando attendo però che in caso di errore effettuo un rollback, il caso di transazione ok effettuo una commit.
    2)non uso i bean e conseguenza ne ignoro l'esistenza....
    comunque io quando ho avuto problemi di inserimento (nella mia tesi ho dovuto inserire "botte" di dati su mysql) ho fatto in questo modo...
    -mi sono creato un oggetto che contiene tutti i dati (nel tuo caso credo un oggetto esperimento);
    -mi sono creato un vector<miooggetto> (nel tuo caso vector<esperimento>)
    -ti "popoli" in qualche modo il vector
    -mi sono creato una stringa con l'intestazione dell'insert (nel tuo caso:
    String insert="INSERT INTO esperimento(id_,username,nometeam) VALUES ";

    -scadisci la lista: per ogni oggetto fai
    insert+= "('"+lista.get(i).id+"','"+lista.get(i).username+" ','"+lista.get(i).nometeam+"'),"

    -alla fine prima delle execute update, ti prendi la size della stringa insert, e sostituisci l'ultima , (virgola) con un ; (punto e virgola)... (almeno per quanto riguarda la sintassi del mio db, mysql) (naturalmente questa soluzione necessita che il tuo database supporti le insert multiple)

    - ora la update
    il gioco è fatto!!!
    non so se ti piace come soluzione, forse preferisci la tua strada, ma io ho dato il mio contributo!!!
    stex1984

  3. #3
    puoi informarti <qui> sulle transazioni
    stex1984

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.