Evento InfoMessage


Existe um Evento da SqlConnection que retorna todas as mensagens geradas pelo SQL Server que não são interpretadas como Exception. É possível recuperar tais mensagens através da SqlConnection. Para isso podemos utilizar o Evento InfoMessage que retorna isso. Abaixo um exemplo de como utilizá-lo:

Criando a StoredProcedure:

CREATE PROCEDURE InfoMessage AS
Print ‘Disparado pelo InfoMessage’
GO

No Evento Load do Formulário:

Private WithEvents conn As SqlClient.SqlConnection
Private Sub Form1_Load(…) Handles MyBase.Load
    conn = New SqlConnection(“…”)
    Dim cmd As SqlCommand = New SqlCommand(“InfoMessage”, conn)
    cmd.CommandType = CommandType.StoredProcedure
    Try
        conn.Open()
        cmd.ExecuteScalar()
        conn.Close()
    Catch ex As Exception
        MessageBox.Show(ex.ToString)
    End Try
End Sub

E no Evento InfoMessage da SqlConnection, capturamos a mensagem da StoredProcedure:

Private Sub conn_InfoMessage(ByVal sender As Object, ByVal e _
    As System.Data.SqlClient.SqlInfoMessageEventArgs) Handles conn.InfoMessage

    MessageBox.Show(e.Message)
End Sub



Com isso, a mensagem que é escrita através do Print do SQL Server, será capturado pelo Evento, e poderá fazer tratamentos no Sistema.

Deixe uma resposta