ADO.NET - Operações Básicas : Incluir dados em uma tabela.
Ao utilizar ADO.NET em uma aplicação para acesso a dados criamos um objeto DataSet que recebe informações de um objeto DataAdapter que usa objetos Connection (OleDB e SQL Connection) para realizar uma conexão com um banco de dados. O objeto DataSet possui em seu interior coleções de objetos DataTable que representa as tabelas de dados em memória.
Nesta série de artigos vou mostrar de forma objetiva como realizar as operações básicas : incluir , alterar e excluir dados em uma tabela de um banco de dados Access (podia ser SQl Server) . Vou usar o banco de dados Clientes.mdb e a tabela Clientes ; abaixo temos a estrutura da tabela , os índices e uma amostra dos dados já incluídos.
|
|
ADO.NET - Incluindo dados em uma tabela
Este primeiro artigo irá tratar da inclusão de dados na tabela Clientes usando ADO.NET. Agora ao trabalho...
a - 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 ou das linhas de código ao lado. Elas permitem usar os objetos que irão criar uma conexão com o banco de dados : Imports System.Data.SqlClient '( se voce for acessar o SQL Server ) Imports System.Data.OleDb '( Para base de dados Access) - No formulário padrão monte o layout conforme a figura ao lado |
Vamos agora incluir o código para incluir dados na tabela Clientes do banco de dados Clientes.mdb. No evento Click do botão - Button1 - (Incluir) digite o código a seguir :
Private Sub
Button1_Click(ByVal
sender As
System.Object, ByVal
e As System.EventArgs) Handles Button1.Click Dim sDBstr As String Dim sSQL As String If TextBox1.Text <> "" Then sDBstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & TextBox1.Text Else Exit Sub End If If TextBox2.Text <> "" Then 'a instrução sql sSQL = "SELECT * from " & TextBox2.Text Else Exit Sub End If Try 'o objeto connection Dim oCn As New OleDbConnection(sDBstr) 'abre a conexao oCn.Open() 'cria o data adapter e executa a consulta Dim oDa As New OleDbDataAdapter(sSQL, oCn) 'cria o dataset Dim oDs As New DataSet() 'preenche o dataset com o data adapter oDa.Fill(oDs, "Name") ' cria uma Data Row Dim oDR As DataRow oDR = oDs.Tables("Name").NewRow If TextBox3.Text <> "" And TextBox4.Text <> "" Then 'preenche os datarow com os valores
If IsDate(TextBox10.Text) Then oDR("nascimento") = CDate(TextBox10.Text) Else oDR("nascimento") = Today End If Else MsgBox("Não há dados válidos !", MsgBoxStyle.Critical, "E R R O ") 'limpa tudo
End If 'adiciona o datarow ao dataset oDs.Tables("Name").Rows.Add(oDR) 'usa o objeto Command Bulder para gerar o comando Insert dinamicamente Dim oCB = New OleDbCommandBuilder(oDa) 'atualiza o Banco de dados com os valores do Dataset com o Data Adapter oDa.Update(oDs, "Name")
Catch exc As Exception MsgBox(exc.ToString & vbCrLf & vbCrLf & "Erro Numero : => " & Err.Number, MsgBoxStyle.Critical, "ERRO") End Try End Sub |
O código para incluir dados na tabela Clientes |
Vamos explicar o código :
1 - Primeiro declaramos as variáveis : sDBstr e sSQL para serem visíveis em todo o formulário. Lembre-se que no VB.NET o visibilidade das variáveis mudou. Se você declarar uma variável dentro de um bloco ela será visível somente neste bloco. | Dim sDBstr As String Dim sSQL As String |
2-
Verificamos se o caminho e o nome do banco de dados foram
informados na caixa de texto : TextBox1.Text. (Você não pode omitir mais a
propriedade Text de TextBox1) Em caso positivo montamos a string de conexão com o provedor para acessar o banco de dados Clientes.mdb em c:\teste |
If TextBox1.Text <>
"" Then sDBstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & TextBox1.Text Else Exit Sub End If |
3- Checamos se o nome da tabela foi informado em TextBox2.text e montamos a instrução SQL que seleciona todos os registros da tabela. | If TextBox2.Text <>
"" Then 'a instrução sql sSQL = "SELECT * from " & TextBox2.Text Else Exit Sub End If |
4- Iniciamos um bloco Try-Catch : criamos o objeto Connection usando o objeto OleDBConnection e a string de conexão : sDBstr | Dim oCn As New OleDbConnection(sDBstr) |
5- Abrimos a conexão | oCn.Open() |
6- Criamos um objeto Data Adapter executando a instrução SQL na conexão oCn criada | Dim oDa As New OleDbDataAdapter(sSQL, oCn) |
7- Criamos um objeto DataSet | Dim oDs As New DataSet() |
8- Preenchemos o DataSet com o DataAdapter | oDa.Fill(oDs, "Name") |
9- Criamos um objeto DataRow. Um DataRow representa uma linha de dados (registro) em um DataTable. Usamos as propriedades e métodos de um DataRow para atualizar , incluir , excluir dados em um DataTable. | Dim oDR As DataRow |
10 - Criamos uma nova linha de dados usando o método NewRow do objeto Datatable. | oDR = oDs.Tables("Name").NewRow |
11-
Verificamos se o código e nome do cliente foram
informados em TextBox3 e TextBox4 . Se não foram
informados emitimos aviso ao usuário e liberamos os
objetos usados ( Dipose() ) Se os dados foram informados atribuimos os valores das caixas de textos a cada coluna presente na tabela e representada pelo objeto DataRow - 0DR . Obs: Fazemos uma critica para verificar se a data informada é válida. |
If TextBox3.Text <>
"" And
TextBox4.Text <> "" Then 'preenche os datarow com os valores
If IsDate(TextBox10.Text) Then oDR("nascimento") = CDate(TextBox10.Text) Else oDR("nascimento") = Today End If Else MsgBox("Não há dados válidos !", MsgBoxStyle.Critical, "E R R O ") 'limpa tudo
End If |
12- Incluimos o DataRow ao objeto DataSet | oDs.Tables("Name").Rows.Add(oDR) |
13- Usamos o objeto Command
Buldier para gerar o comando Insert dinamicamente. O objeto OleDbDataAdapter não gera automaticamente instruções SQL necessárias para conciliar as alterações feitas em um DataSet com a fonte de dados associada Usamos então o objeto OleDbCommandBuilder que fornece um meio de gerar automaticamente estes comandos para atualizar alterações feitas no DataSet no banco de dados associado. . |
Dim oCB = New OleDbCommandBuilder(oDa) |
14- Atualiza o Banco de dados com os valores do Dataset com o Data Adapter | oDa.Update(oDs, "Name") |
15- Libera todos os componentes usados no código. | limpa tudo oDa.Dispose() oDs.Dispose() oCB.Dispose() oCn.Dispose() |
16 - Capturamos qualquer exceção que ocorrer no processamento e exibimos ao usuário. | Catch exc As Exception MsgBox(exc.ToString & vbCrLf & vbCrLf & "Erro Numero : => " & Err.Number, MsgBoxStyle.Critical, "ERRO") End Try |
Agora rode o projeto e informe os valores apropriados nas caixas de texto. Abaixo temos a tela com os valores e um exemplo de mensagem de erro exposta.
Tela exibindo os dados informados e prontos para serem incluidos na tabela Clientes |
Mensagem de erro indicando que tentamos incluir um cliente com um código ja existente na tabela Clientes |
Na continuação deste artigo iremos ver como atualizar dados usando ADO.NET. Até lá...
José Carlos Macoratti