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.