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. |
||||||||||||
|
||||||||||||
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.)
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 :
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: