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

  1. Project Types : Visual Basic Projects
  2. Templates : Windows Application
  3. Name : ADOBasico
  4. Location : c:\vbnet \adobasico
- 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

oDR("Id") = CLng(TextBox3.Text)

oDR("Nome") = TextBox4.Text

oDR("endereco") = TextBox5.Text

oDR("cidade") = TextBox6.Text

oDR("estado") = TextBox7.Text

oDR("cep") = TextBox8.Text

oDR("telefone") = TextBox9.Text

       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

oDA.Dispose()

oDs.Dispose()

oCn.Dispose()

Exit Sub

    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")

'limpa tudo

oDa.Dispose()

oDs.Dispose()

oCB.Dispose()

oCn.Dispose()

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

oDR("Id") = CLng(TextBox3.Text)

oDR("Nome") = TextBox4.Text

oDR("endereco") = TextBox5.Text

oDR("cidade") = TextBox6.Text

oDR("estado") = TextBox7.Text

oDR("cep") = TextBox8.Text

oDR("telefone") = TextBox9.Text

       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

oDA.Dispose()

oDs.Dispose()

oCn.Dispose()

Exit Sub

    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