ADO.NET - Uma visão geral  I (Objetos Connection,Command e DataReader)


Estamos iniciando aqui um minicurso sobre ADO.NET , nele vamos mostrar como usar os recursos de acesso a dados do ADO.NET via código. Todos estes recursos estão presentes no Namespace System.Data do ADO.NET.

 

O que é ADO .NET ?

ADO.NET é a nova tecnologia para banco de dados da plataforma de .NET.

ADO.NET é uma parte integral da plataforma  .NET, fornecendo o acesso aos dados relacionais, documentos  XML, e aos dados da aplicação.Você pode criar as aplicações  para banco de dados cliente/servidor e tratar os objetos do negócio em camadas usados por aplicações, ferramentas, ou por navegadores da web.

ADO.NET define os objetos DataSet e DataTable que são otimizados para mover conjuntos  desconectados de dados através de redes (intranets e da Internet), e  através de firewalls. Inclui também os objetos  Connection e Command, assim como um objeto chamado DataReader que se assemelha a um recordset somente-leitura-para-frente .

Você pode usar ADO.NET para acessar dados usando os novos fornecedores de dados nativos (data providers) da plataforma .NET :

Os componentes ADO.NET foram desenhados para tratar o acesso aos dados e a manipulação dos mesmos. Os componentes que podemos chamar de pilares do ADO.NET são : DataSet e  o provedor .NET que é um conjunto de componentes que inclui os objetos Connection, Command, DataReader, and DataAdapter.

 

O ADO.NET atual pode acessar dados de três maneiras : OLE DB , SQL e ODBC (implementado mais recentemente). Cada objeto possui uma versão para cada uma das maneiras aqui mencionadas ; assim temos o objeto OleDataAdapter e SqlDataAdapter . Abaixo uma figura ilustrando isto:

 

 

 

Todos os recursos ADO.NET são oferecidos através dos Namespaces (espaços de nomes) da biblioteca de nomes da classe .NET. 

Vamos começar pelo objeto Conncetion:

 

ADO.NET - Usando objetos Connection

 

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.

 

Nota: O objeto de Connection geralmente usa  um construtor com um único argumento do tipo string. Este argumento é chamado uma string da conexão. a tabela 1 descreve partes comuns de uma string de conexão para o SQL Server.
 
Nome do Parametro da String de conexão descrição
Data Source Identifica o servidor.  Pode ser a maquina local, domínio ou endereço IP.
Initial Catalog nome do banco de dados
Integrated Security Define o SSPI para efetuar a conexão com usuário logado no Windows
User ID Nome do usuário definido no SQL Server.
Password Senha
 

 

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

 

 

Como exemplo vamos criar um projeto que usa os objetos OleDBConnection e OleDbCommand para inserir um linha na tabela Clientes do banco de dados BiBlio.mdb.  Abaixo esta a estrutura da tabela Clientes e uma visualização dos seus dados atuais:

 

 

Inicie um novo projeto no Visual Studio.NET com as seguintes características (sinta-se a vontade para alterar a seu gosto.)

  1. Project Types : Visual Basic Projects
  2. Templates : Windows Application
  3. Name : AdoNet_1
  4. Location : c:\vbnet \Adonet_1

No formulário padrão - form1.vb - insira uma caixa de texto - TextBox1  e um botão de comando - Button1 - conforme layout abaixo:

Agora vamos incluir o código que irá incluir o registro no banco de dados no evento Click do botão de comando conforme abaixo:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

   

    Dim conn As New OleDbConnection()

    conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & TextBox1.Text

      Dim cmd As OleDbCommand = conn.CreateCommand

    cmd.CommandText = "Insert into Clientes Values (11,'Teste De Inclusão','Rua Teste no 10','061-123456','10/11/1965')"

    Try

           conn.Open()

           cmd.ExecuteNonQuery()

           conn.Close()

           MsgBox("Registro incluido com sucesso !", MsgBoxStyle.Information, "Incluindo registros")

      Catch erro As Exception

           MsgBox("Erro " & vbCrLf & erro.ToString, MsgBoxStyle.Critical, "Erro")

      End Try

End Sub

 

Observe que destacamos as linhas de código principais :

 

 conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & TextBox1.Text  Cria a string de conexão usando OLE DB
cmd.CommandText = "Insert into Clientes Values (11,'Teste De Inclusão','Rua Teste no 10','061-123456','10/11/1965')"  Inclui um registro na base de dados usando uma instrução SQL - Insert Into Values

 

ADO.NET - Objetos Command

 

Os objetos Command são usados para executar declarações SQL  e procedimentos armazenados (stored procedures). Os métodos usados para realizar estas tarefas são :

Para criar um comando você já deve ter uma conexão criada . Assim para um banco de dados SQL Server  devemos usar um objeto SqlCommand , já se usarmos provedores OLE DB deveremos usar o objeto OLEDCommand . Vejamos um exemplo de criação de um comando :

 

Dim SQLString as String = "Select * from Clientes Where Codigo > 100"

Dim cmd as New SqlCommand(SQLString, conexao )

 

No exemplo acima usamos um objeto SQLCommand onde especificamos a conexão já existente que será usada para selecionar registros de uma tabela clientes onde o código seja maior que 100. Abaixo temos uma outra forma de obter o mesmo resultado:

 

Dim SQLString as String = "Select * from Clientes Where Codigo > 100"
Dim cmd As new SqlCommand

cmd.CommandText = SQLString
cmd.Connection = conexao

 

Para receber e manipular os dados retornados pelos métodos acima precisamos usar os objetos DataReader : OledbDataReader e SqlDataReader.

 

Objetos DataReader

 

Os objetos DataReader é uma das maneiras mais fáceis para ler os dados retornados pelos objetos Command . Eles permitem acessar e percorrer os registros no modo de somente leitura e somente para frente - forward-only . Não oferecem acesso desconectado e não permitem alterar ou atualizar a fonte de dados original sendo usado para obter rapidamente dados de apenas leitura. Apresenta poucos recursos mas seu desempenho é muito melhor do que o oferecido pelos DataSet.

 

As propriedades e métodos mais usadas dos objetos DataReader são :

  1. FieldCount - informa o número de colunas da linha de dados atual
  2. IsClosed - Indica se o objeto DataReader esta fechado.
  3. RecordsAffected - especifica o número de linhas alteradas , excluídas ou incluídas na execução de uma declaração SQL
  4. Item (n) - obtêm o valor da n-ésima coluna no seu formato nativo.
  5. Close - Método que fecha o objeto
  6. GetName - Método que retorna o nome da n-ésima coluna.
  7. Read - método que permite ao DataReader avançar para o próximo registro
  8. IsDbNull - método que informa se a n-ésima coluna possui um valor nulo.

Para criar um objeto DataReader usamos o método ExecuteReader de um objeto Command . Abaixo um exemplo simples de como fazer isto :

 

Dim leitor As SQLDataReader = cmd.ExecuteReader()

 

Vamos mostrar um exemplo completo usando o DataReader para ler a tabela clientes do banco de dados BiBlio.mdb. Os dados serão exibidos em dois controles : Listbox e ListView.

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

 

Dim conn As New OleDbConnection()

conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & TextBox1.Text

Dim cmd As OleDbCommand = conn.CreateCommand

 

cmd.CommandText = "Select * from Clientes"

conn.Open()

 

Dim leitor As OleDbDataReader = cmd.ExecuteReader()

Try

    While leitor.Read()

              Dim i As Integer

              For i = 0 To leitor.FieldCount - 1

             ListBox1.Items.Add(leitor.Item(i))

              Next

       End While

    leitor.Close()

    conn.Close()

Catch erro As Exception

        MsgBox("Erro " & vbCrLf & erro.ToString, MsgBoxStyle.Critical, "Erro")

End Try

 

End Sub

 

O código acima esta associado ao evento Click do botão de comando - Button1 - e preenche o ListBox - listbox1 - com os dados da tabela Clientes.

 

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

 

Dim conn As New OleDbConnection()

conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & TextBox1.Text

 

Dim cmd As OleDbCommand = conn.CreateCommand

cmd.CommandText = "Select * from Clientes"

conn.Open()

 

Dim leitor As OleDbDataReader = cmd.ExecuteReader()

Dim i As Integer = 0

 

For i = 0 To leitor.FieldCount - 1

    ListView1.Columns.Add(leitor.GetName(i).ToString, 110, HorizontalAlignment.Left)

Next

 

ListView1.View = View.Details

 

Do While leitor.Read()

    Dim novoitem As New ListViewItem()

    novoitem.Text = leitor(0)

    For i = 1 To leitor.FieldCount - 1

           If leitor(i) Is DBNull.Value Then

            novoitem.SubItems.Add(" ")

           Else

            novoitem.SubItems.Add(leitor.Item(i).ToString)

          End If

     Next

   ListView1.Items.Add(novoitem)

Loop

 

End Sub

 

O código acima esta associado ao evento Click do botão de comando - Button2 - e preenche o ListView - listbview1 - com os dados da tabela Clientes.

 

Abaixo temos o projeto exibindo os dados em tempo de execução:

 

 

Veja a  segunda parte em : ADO.NET - Uma visão geral II : O objeto DataTable  ...

 

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter
 

Referências:


José Carlos Macoratti