Transaction visual basic vb.net

di il
2 risposte

Transaction visual basic vb.net

Ho scritto il seguente codice che dovrebbe andare ascrivere su una tabella del server(in questo momento in locale su un DB access)

Sto provando la Transaction con Commit e Rollback.

Ho scritto questo e sembra che funziona almeno il Commit.

Domanda: Ma il rollback serve a riprovare l' insert oppure ad annullarlo?

In realtà io voglio sapere se l' operazione è andata a buon fine oppure se c' è da rilanciare l'insert perchè il server magari ha avuto problemi o per casi di Timeout.


    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim pippo
            pippo = TextBox1.Text.ToString
     
            Dim transaction As OleDbTransaction
            ' Start a local transaction
            'transaction = MyConnessione.BeginTransaction("SampleTransaction")
            transaction = MyConnessione.BeginTransaction()
            Try
     
                strSQL = "INSERT INTO " & "tbl" &
                                        "([Numero],[Descrizione]) " &
                                        "VALUES (?,?)"
     
     
                Dim cmdCommand As OleDbCommand = New OleDbCommand(strSQL, MyConnessione)
     
                ' Must assign both transaction object and connection
                ' to Command object for a pending local transaction.
     
                cmdCommand.Transaction = transaction
     
                cmdCommand.Parameters.Add(New OleDbParameter("@AAA", OleDbType.VarChar)).Value = "0" 'Trim(Carrello_Numero_Letto) '21 gennaio 2019
                cmdCommand.Parameters.Add(New OleDbParameter("@BBB", OleDbType.VarChar)).Value = Trim(pippo)   '21 gennaio 2019
     
                cmdCommand.ExecuteNonQuery()
                transaction.Commit()
     
     
     
            Catch ex As Exception
                transaction.Rollback()
     
                FileClose(1)
                FileOpen(1, "LOG Errori" & ".txt", OpenMode.Append, , , )    'Open "ParametriTest.ini" For Input As 1
                PrintLine(1, ex.Message & " Non riesco a connettermi alla Tabella  ")
                FileClose(1)
                FileClose(1)
                FileOpen(1, "Trace" & ".txt", OpenMode.Append, , , )    'Open "ParametriTest.ini" For Input As 1
                PrintLine(1, strSQL)
                FileClose(1)
     
     
            End Try
     
        End Sub

2 Risposte

  • Re: Transaction visual basic vb.net

    Se transaction.Commit() è andata a buon fine, allora l'esecuzione del codice non è passata dal Catch ed è tutto a posto.

    Il rollback ti annulla la insert se si è generata un'eccezione in un punto dopo BeginTransaction() e prima di Commit()

    Comunque anche transaction.Rollback() andrebbe scritto dentro un blocco Try/Catch all'interno del primo Catch
  • Re: Transaction visual basic vb.net

    Ok provo
Devi accedere o registrarti per scrivere nel forum
2 risposte