ADO.Net na Prática - Modelo Desconectado
 
 
Uma novidade que o ADO.Net trouxe, é trabalhar com o banco de dados de maneira desconectada, sendo assim não precisamos manter uma conexão aberta para manipular os dados.
 
Os dados são colocados em um DataSet, através de um outro objeto o DataAdapter:
 
DataSet: Representa os dados do Banco de Dados, é uma cópia das tabelas e seus relacionamentos.
 
DataAdapter: Objeto responsável por comunicar o DataSet com o Banco de Dados.
 
O DataAdapter  possui o método Fill que copia os dados da fonte de dados para o DataSet, permitindo desta forma o trabalho desconectado do banco de dados, quando efetuamos alterações diretamente no Banco, temos que chamar o método Update deste objeto (DataAdapter).
 
Nosso Objetivo é apresentar de maneira prática a aplicação dos principais comandos para banco de dados: Select, Insert, Delete e UpDate.
 
Como apresentei no artigo “ADO.Net Fundamentos”, o ADO possui um NameSpace chamado System.Data onde encontramos todas as classes necessárias para o trabalho com o ADO.net, para trabalhar com os camandos
Select, Insert, Delete e UpDate, vamos precisar da NameSpace:
 
System.Data.SqlClient (Para bancos SQL Server a partir da versão 7)
 
Criaremos a seguir um banco de dados com uma tabela, se preferir pode utilizar um banco de dados que já exista em sua máquina, neste caso vá direto para o exercício N° 9
 
1-    Abra o Visual Studio, crie um novo projeto do tipo Windows Application usando a Linguagem C#, com o nome “Aplicação”.
2-    Clique com o botão direito sobre a Aplicacao e selecione add NewItem.
  
 

 
 
 
3-    Na Janela que aparece, selecione a opção SqlDataBase, no campo Nome deixe Database1.mdf clique em Add.
4-    Aparece agora a janela Data Source Configuration Wizard, clique apenas em cancelar.
 
5-    No canto esquerdo superior, encontramos a Tela Server Explorer
 
 

 
Através do Server Explorer podemos realizar consultas em Servidores de uma rede, através desta ferramenta podemos consultar e acessar Serviços que podem ser: Conexões de Dados ou Servidores.
 
6-    No Server Explorer clique com o botão direito sobre Tables, escolha a opção Add New Table e adicione dois campos veja a imagem:
 
   
 
7-    Clique com o botão direito sobre o campo IDNome, escolha a opção Set Primary Key, em seguida clique nas propriedades do campo e localize a opção Identity Column (Com esta opção selecionada o campo IDNome será autonumérico).                                              
 

 
8-    Salve a tabela como Cliente.
9-    No menu Data selecione Add New Data Source. Na primeira tela clique em Database e avance.
10-    Certifique-se que esteja selecionado o banco que criamos Datbase1.mdf ou escolha o banco que desejar.
11-    Avançando veremos a String de Conexão Database1ConnectionString. (Para mais informações sobre String de Conexão acesse meu artigo “ADO.Net Fundamentos”), clique em avançar.  
12-    Selecione a tabela Clientes e finalize.
 
 
13-    No Server Explorer, clique com o botão direito na tabela Cliente, escolha a opção Show Table Data e adicione alguns nomes. (Repare que a coluna IDNome é preenchida automaticamente). Para gravar as informações digitadas clique no botão ExecuteSQL
  

 

  
14-    Acesse a ToolBox, insira no Form1, um DataGridView e dois Buttons
 
 
 
15-    Localize no Solution Explorer o arquivo app.config (Neste arquivo podemos efetuar várias configurações genéricas para nossa aplicação, aqui vamos apenas alterar o caminho do banco de dados na string de conexão), abra o arquivo.
Iremos alterar esta linha:
 
AttachDbFilename=|DataDirectory|\Database1.mdf
Substitua |DataDirectory| pelo caminho onde está seu banco de dados, no meu caso esta linha ficará assim:
AttachDbFilename=E:\Arquivos_PK\Programacao\NET\Aplicacao\Database1.mdf
 
16-    Dê dois cliques no Button1 (Este botão irá popular o DataGridView com os nomes preenchidos na tabela). Precisamos usar o NameSpace System.Data.SqlClient.
 
 
17- Antes do evento clique do Button1, adicione as seguintes linhas:
        // Recupera a String de Conexão criada no arquivo app.config
        String strCn = Aplicacao.Properties.Settings.Default["Database1ConnectionString"].ToString();
 
        SqlDataAdapter da = new SqlDataAdapter();
        DataSet ds = new DataSet(); 
 
 
18- Código do botão 1:
 
        private void button1_Click(object sender, EventArgs e)
        {
            //Cria a conexão chamada cn
            SqlConnection cn = new SqlConnection(strCn);
           
            //Definimos que nosso DataAdapter (da) receberá um comando SQL
            //Atribuimos a propriedade CommandText, um comando SQL
            //Definimos a conexão que será usada para executar o comando
 
            da.SelectCommand = new SqlCommand();           
            da.SelectCommand.CommandText = "Select * From Cliente";
            da.SelectCommand.Connection = cn;
 
            //O Método Fill "cria" uma tabela chamada Cliente no DataSet com
            //os dados retornados do comando Select
            da.Fill (ds, "Cliente");
 
            //Definimos a propriedade DataSource do objeto
            //dataGridView para receber as informações contidas
            //na tabela Cliente do DataSet (ds)
            dataGridView1.DataSource = ds.Tables ["Cliente"];
        }
 
 
19- Tela de código:
  
 
 
20- Código do Botão 2:
 
        private void button2_Click(object sender, EventArgs e)
        {
            //Cria a conexão chamada cn
            SqlConnection cn = new SqlConnection(strCn);
 
            //Definimos que nosso DataAdapter (da) receberá um comando SQL
            //Atribuimos a propriedade CommandText, um comando SQL
            //Definimos quais os parâmetros que serão passados para o comando,
            //seu tipo e tamanho
            //Definimos a conexão que será usada para executar o comando           
 
            da.InsertCommand = new SqlCommand();
            da.InsertCommand.CommandText = "Insert Cliente (Nome) Values (@Nome)";
            da.InsertCommand.Parameters.Add("@Nome", SqlDbType.VarChar, 30, "Nome");
            da.InsertCommand.Connection = cn;
 
            //O método UpDate é chamado para efetivar o comando SQL
            //Informamos para o método qual o DataSet (ds) e a tabela
            //que serão atualizados
            da.Update(ds.Tables["Cliente"]);
        }
 
21- Teste sua aplicação
22-  Adicione mais 2 botões, um receberá o Código para atualizar a tabela e o outro para excluir um registro.
23-  Código do botão para exclusão
 
        private void button3_Click(object sender, EventArgs e)
        {
            SqlConnection cn = new SqlConnection(strCn);
 
            da.DeleteCommand  = new SqlCommand();
            da.DeleteCommand.CommandText = "DELETE FROM Cliente WHERE (IDNome = @IDNome)";
            da.DeleteCommand.Parameters.Add("@IDNome", SqlDbType.Int, 4, "IDNome");
            da.DeleteCommand.Connection = cn;
 
            da.Update(ds.Tables["Cliente"]);
   } 
 
24- Código do botão de Atualização
 
        private void button4_Click(object sender, EventArgs e)
        {
            SqlConnection cn = new SqlConnection(strCn);
 
            da.UpdateCommand = new SqlCommand();
            da.UpdateCommand.CommandText = "Update Cliente Set Nome = @Nome Where IDNome = @IDNome";
            da.UpdateCommand.Parameters.Add("@IDNome", SqlDbType.Int, 4, "IDNome");
            da.UpdateCommand.Parameters.Add("@Nome", SqlDbType.VarChar, 30, "Nome");
            da.UpdateCommand.Connection = cn;
 
            da.Update(ds.Tables["Cliente"]);
        }
 
25- Execute sua aplicação.