Quantcast
Channel: Visual Basic Tips and Tricks
Viewing all articles
Browse latest Browse all 2212

Sql server Utilizzo transazioni

$
0
0

Buongiorno a tutti, volevo un parere sul mio codice.

La sub RegistraDati non gestisce l'errore, ma eventualmente lo restituisce a RegistraDati_1_2, fin qui tutto ok.

Ho messo 2 try, perchè anche la connessione potrebbe andare in errore.

Nella sub RegistraDati, ho utilizzato 2 Using cmd per registrare i dati di 2 oggetti diversi, quindi 2 tabelle diverse. Il codice funziona perfettamente.

Il dubbio che mi è venuto è questo:

il codice fa il dispose dell'oggetto cmd e poi esegue il commit della transazione trs.

Questo vuol dire che i dati vengono gestiti dalla transazione e i vari command (in questo caso 2 oggetti con lo  stesso nome), possono essere "distrutti"?

Private Sub RegistraDati_1_2()

        Try
            Dim stringaConnessione As String = "Recupera Stringa Connessione"
            Using cn As New SqlConnection(stringaConnessione)
                cn.Open()
                Using trs As SqlTransaction = cn.BeginTransaction
                    Try
                        RegistraDati("ClasseConIDatiDaRegistrare1", "ClasseConIDatiDaRegistrare2", cn, trs)
                        trs.Commit()
                    Catch ex As Exception
                        trs.Rollback()
                        Throw New ArgumentException(ex.Message)
                    End Try
                End Using
            End Using
            MessageBox.Show("Dati salvati correttamente", "MiaApp", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Catch ex As Exception
            MessageBox.Show(ex.Message, "MiaApp", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub

    Public Shared Sub RegistraDati(ByVal dati1 As String, dati2 As String, cn As SqlConnection, trs As SqlTransaction)
        Dim q1 As String = "INSERT INTO...."
        Dim q2 As String = "INSERT INTO...."
        'Inserisco i dati del primo oggetto nel DB
        Using cmd As New SqlCommand(q1, cn, trs)
            With cmd
                'tutti i parametri per l'insrt

                .ExecuteScalar() 'se ho bisogno di recuperare l'id
            End With
        End Using 'cmd
        'Inserisco i dati del secondo oggetto nel DB
        Using cmd As New SqlCommand(q2, cn, trs)
            With cmd
                'tutti i parametri per l'insrt

                .ExecuteScalar() 'se ho bisogno di recuperare l'id
            End With
        End Using 'cmd
    End Sub


Viewing all articles
Browse latest Browse all 2212

Trending Articles


HOY PANGIT, MAGBAYAD KA!


Henry el monstruo feliz para colorear e imprimir


Dama y vagabundo para pintar


Girasoles para colorear


Good Morning Quotes


RE: Mutton Pies (jameskoiman)


Hagibis (1946) by Francisco V. Coching


Ka riam ka beit bad ka por riam


Vimeo Create - Video Maker & Editor 1.6.0 by Vimeo Inc


Vimeo 3.42.1 by Vimeo Inc