C#: begin transaction - commit

di Anonimizzato938 il
3 risposte
Ciao a tutti,

devo aggiornare tre tabelle di un database Access (OleDb), con tre insert (o update, o delete)... vorrei fare in modo che se ci fosse qualche problema su una query, ad esempio sulla seconda, mi venissero annullate anche le altre con un meccanismo tipo begin transaction - commit/rollback... qualcuna sa dirmi come si fa?

grazie,
Alessandro

3 Risposte

  • Ciao Alessandro
    Questa volta non sei stato molto chiaro...ma a quanto ho capito del tuo problema,nel caso di Access devi usare la classe OleDbTransaction.
    Questa classe rappresenta una transazione SQL da effettuare in corrispondenza di un'origine dati. Poi chiami il metodo BeginTransaction esempio:
    ...
    myTrans = myConnection.BeginTransaction(IsolationLevel.ReadCommitted,"SampleTransaction");
    ...
    myCommand.Connection = myConnection;
    myCommand.Transaction = myTrans;
    ...
    myCommand.CommandText = "Insert into pippo (pippoID, pippoDescrizione) VALUES (100, 'Descrizione')";
    ....
    myTrans.Rollback("SampleTransaction");
    ...
    if (myTrans.Connection != null)

    etc...
    Spero di esserti stato d'aiuto
    ciao

    sergio
  • Ciao Sergio,
    ho preso spunto e sembra funzionare!

    ho fatto cosi:


    ...
    OleDbTransaction tran = conn.BeginTransaction();
    //dove conn è la connessione precedentemente dichiarata e aperta

    ...//dichiarazione query

    command1.Transaction = tran;
    command2.Transaction = tran;
    command3.Transaction = tran;

    try
    {
    ...//esecuzione query
    trans.Commit();
    }
    catch (Exception ex)
    {
    trans.Rollback();
    }
    ...

    grazie,
    Alessandro

  • Prego.
    Ciao


    sergio
Devi accedere o registrarti per scrivere nel forum
3 risposte