none
Criar SQLTransaction no vb.net RRS feed

  • Pergunta

  • Prezado(a)s estamos com uma aplicação em VB.net onde ao se escolher a opção gravar irá fazer um insert em 3 tabelas. Precisaria de um exemplo com SQLTransaction, onde só me confirmaria a inserção apos sucesso nas 3 tabelas. Lembrando que estamos usando o VisualStudio2010 e SQLServer2008

     

    Contando com a colaboração de todos

     


    Marcelo Nogueira
    • Tipo Alterado Gustavo Maia Aguiar segunda-feira, 8 de agosto de 2011 02:06 É uma dúvida e não uma alteração
    • Movido Gustavo Maia Aguiar segunda-feira, 8 de agosto de 2011 02:28 (De:Programação avançada com o SQL Server)
    domingo, 7 de agosto de 2011 22:58

Respostas

  • Boa Noite,

    O próprio help do produto, tem um exemplo bem intuitivo. Estou reproduzindo-o aqui.

    Private Sub ExecuteSqlTransaction(ByVal connectionString As String)
        Using connection As New SqlConnection(connectionString)
            connection.Open()

            Dim command As SqlCommand = connection.CreateCommand()
            Dim transaction As SqlTransaction

            ' Start a local transaction
            transaction = connection.BeginTransaction("SampleTransaction")

            ' Must assign both transaction object and connection
            ' to Command object for a pending local transaction.
            command.Connection = connection
            command.Transaction = transaction

            Try
                command.CommandText = _
                  "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
                command.ExecuteNonQuery()
                command.CommandText = _
                  "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"

                command.ExecuteNonQuery()

                ' Attempt to commit the transaction.
                transaction.Commit()
                Console.WriteLine("Both records are written to database.")

            Catch ex As Exception
                Console.WriteLine("Commit Exception Type: {0}", ex.GetType())
                Console.WriteLine(" Message: {0}", ex.Message)

                ' Attempt to roll back the transaction.
                Try
                    transaction.Rollback()

                Catch ex2 As Exception
                    ' This catch block will handle any errors that may have occurred
                    ' on the server that would cause the rollback to fail, such as
                    ' a closed connection.
                    Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType())
                    Console.WriteLine(" Message: {0}", ex2.Message)
                End Try
            End Try
        End Using
    End Sub

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    segunda-feira, 8 de agosto de 2011 02:28

Todas as Respostas

  • Marcelo,

    A dúvida é para montar a query ou desenvolver o processo de inserção dos dados?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    segunda-feira, 8 de agosto de 2011 00:27
  • Desenvolver o processo.
    Marcelo Nogueira
    segunda-feira, 8 de agosto de 2011 01:12
  • Boa Noite,

    O próprio help do produto, tem um exemplo bem intuitivo. Estou reproduzindo-o aqui.

    Private Sub ExecuteSqlTransaction(ByVal connectionString As String)
        Using connection As New SqlConnection(connectionString)
            connection.Open()

            Dim command As SqlCommand = connection.CreateCommand()
            Dim transaction As SqlTransaction

            ' Start a local transaction
            transaction = connection.BeginTransaction("SampleTransaction")

            ' Must assign both transaction object and connection
            ' to Command object for a pending local transaction.
            command.Connection = connection
            command.Transaction = transaction

            Try
                command.CommandText = _
                  "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
                command.ExecuteNonQuery()
                command.CommandText = _
                  "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"

                command.ExecuteNonQuery()

                ' Attempt to commit the transaction.
                transaction.Commit()
                Console.WriteLine("Both records are written to database.")

            Catch ex As Exception
                Console.WriteLine("Commit Exception Type: {0}", ex.GetType())
                Console.WriteLine(" Message: {0}", ex.Message)

                ' Attempt to roll back the transaction.
                Try
                    transaction.Rollback()

                Catch ex2 As Exception
                    ' This catch block will handle any errors that may have occurred
                    ' on the server that would cause the rollback to fail, such as
                    ' a closed connection.
                    Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType())
                    Console.WriteLine(" Message: {0}", ex2.Message)
                End Try
            End Try
        End Using
    End Sub

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    segunda-feira, 8 de agosto de 2011 02:28