ADO.NET - Conhecendo melhor a sua conexão

 

Como você já deve ter desconfiado , o objeto Connection têm a função de gerar uma conexão com uma fonte de dados sendo portanto o objeto fundamental no acesso a dados.

 

Para estabelecer uma conexão com uma fonte de dados o objeto Connection usa a propriedade ConnectionString que é a string de conexão que deverá ser informada para que a conexão seja efetivamente aberta.

 

Após realizada a conexão com a fonte de dados podemos usar objetos para receber e enviar dados para a fonte de dados , dentre estes objetos podemos citar : Command e DataAdapter.

 

A seguir vamos mostrar um diagrama com os componentes da arquitetura ADO.NET

 

Neste artigo vou mostrar como você pode obter mais informações sobre sua conexão para conhecê-la melhor. Afinal existem muitos recursos disponíveis para fazer isto no .NET Framework além dos métodos Open e Close.

A interface IDbConnection permite a a implementação da classe Connection , a qual representa uma única sessão com uma fonte de dados. Uma aplicação não cria uma instância da interface IDbConnection diretamente mas cria uma instância de uma classe que herda de IDbConnection. (Classes que herdam IDbConnection precisam implementar todos os membros herdados e definir membros adicionais para fornecer a funcionalidade do provedor.)

A propriedade State obtém o estado atual da conexão.

As mudanças permitidas de estado são:

Public Sub CreateSqlConnection()

    Dim myConnectString As String = "Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=mySQLServer"

    Dim myConnection As New SqlConnection(myConnectString)
    myConnection.Open()

    MessageBox.Show("ServerVersion: " + myConnection.ServerVersion + ControlChars.Cr + "Estado: " + myConnection.State.ToString())
    myConnection.Close()

End Sub

Para saber como está a conexão durante o processamento podemos usar a propriedade ConnectionState e os eventos da conexão para obter informações sobre a mesma.

O objeto Connection possui dois eventos que podemos usar para obter mensagens de informações da fonte de dados ou para determinar se o estado da conexão sofreu alterações. Os eventos do objeto Connection são:

Evento Descrição
InfoMessage Ocorre quando uma mensagem de informação é retornada de uma fonte de dadoscurs when an informational message is returned from a data source. Mensagens de informção são mensagens de uma fonte de dados que não resultam em uma exceção a ser tratada.
StateChange Ocorre quando o estado do objeto  Connection sofre alteração

InfoMessage

Você pode obter alertas e mensagens de informações de uma fonte de dados usando o evento InfoMessage do objeto Connection.

O evento InfoMessage recebe um objeto InfoMessageEventArgs contendo , na sua propriedade Errors , uma coleção de mensagens de uma fonte de dados. Você pode consultar o objeto Error nesta coleção obtendo o número do erro e sua mensagem de texto bem como a fonte do erro.

Vejamos um exemplo de como usar este recurso onde incluímos um manipulador para o evento InfoMessage:

Dim nwindConn As OleDbConnection = New OleDbConnection("Provider=SQLOLEDB;Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind;")

AddHandler nwindConn.InfoMessage, New OleDbInfoMessageEventHandler(AddressOf OnInfoMessage)

Private Shared Sub OnInfoMessage(ByVal sender As Object, ByVal args As System.Data.SqlClient.SqlInfoMessageEventArgs)

   Dim err As System.Data.SqlClient.SqlError

  
For Each err In args.Errors
        Console.WriteLine("O {0} recebeu um erro {1}, estado {2} erro numero {3}\n" & _
                   "na linha {4} da procedure {5} no servidor {6}:\n{7}", _
                    err.Source, err.Class, err.State, err.Number, err.LineNumber, _
                    err.Procedure, err.Server, err.Message)
  
Next
End
Sub

StateChange

O evento StateChange ocorre quando o estado da conexão muda. O evento recebe StateChangeEventArgs que permite a você determinar a mudança no estado da conexão usando as propriedades OriginalState e CurrentState.

A propriedade OriginalState indica o estado da conexão antes da alteração e a propriedade CurruentState indica o estado da conexão depois da alteração.

O exemplo a seguir usa o evento StateChange para escrever uma mensagem no console quando o estado da conexão mudar:

AddHandler nwindConn.StateChange, New StateChangeEventHandler(AddressOf OnStateChange)

Protected Shared Sub OnStateChange(sender As Object, args As StateChangeEventArgs)

  Console.WriteLine("A estado da conexão atual mudou de {0} para {1}.", args.OriginalState, args.CurrentState)

End Sub

Simples e básico: aguarde mais artigos VB.NET...


José Carlos Macoratti