WPF
- Manutenção de dados com ADO .NET (C#)
Este é um artigo para iniciantes que desejam realizar operações com banco de dados em uma aplicação WPF.(Windows Presentation Foundation)
Vou mostrar como podemos realizar a manutenção de dados de um banco de dados SQL Server realizando as operações CRUD de forma bem simples.
Vamos iniciar abrindo o Visual C# 2010 Express Edition e criando um novo projeto do tipo WPF Application com o nome WPF_CRUD;
No menu File clique em New Project selecione o template WPF Application, informe o nome WP_CRUD e clique em OK;
Vamos criar um banco de dados SQL Server usando a janela DataBase Explorer;
Crie um banco de dados com o nome Teste.mdf e a seguir uma tabela chamada Candidatos com a seguinte estrutura:
![]() |
![]() |
A seguir abra o arquivo MainWindow.xaml e inclua os seguintes controles :
O leiaute da pagína MainWindow.xaml e vista a seguir:
![]() |
O código XAML pode ser visto abaixo:
<Window x:Class="WPF_CRUD.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Resultado da Prova de Admissão" Height="424" Width="700" Loaded="Window_Loaded">
<Grid>
<Label Content="Código" Height="28" HorizontalAlignment="Left" Margin="37,307,0,0" Name="label1" VerticalAlignment="Top" Width="77" Visibility="Visible" />
<Label Content="Nome" Height="28" HorizontalAlignment="Left" Margin="180,307,0,0" Name="label2" VerticalAlignment="Top" Width="49" Visibility="Visible" />
<Label Content="Classificação" Height="28" HorizontalAlignment="Left" Margin="419,307,0,0" Name="label3" VerticalAlignment="Top" Width="94" Visibility="Visible" />
<Button Content="Inserir" Height="23" HorizontalAlignment="Left" Margin="121,345,0,0" Name="btnInserir" VerticalAlignment="Top" Width="75" Click="btnInserir_Click" />
<DataGrid AutoGenerateColumns="True" Height="265" HorizontalAlignment="Left" Margin="12,25,0,0" Name="macDataGrid" VerticalAlignment="Top" Width="654" />
<Button Content="Atualizar" Height="23" HorizontalAlignment="Left" Margin="227,345,0,0" Name="btnAtualizar" VerticalAlignment="Top" Width="75" Click="btnAtualizar_Click" />
<Button Content="Deletar" Height="23" HorizontalAlignment="Right" Margin="0,345,270,0" Name="btnDeletar" VerticalAlignment="Top" Width="75" Click="btnDeletar_Click" />
<TextBox Height="23" HorizontalAlignment="Right" Margin="0,309,129,0" Name="txtClassificacao" VerticalAlignment="Top" Width="51" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="227,309,0,0" Name="txtNome" VerticalAlignment="Top" Width="181" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="120,309,0,0" Name="txtCodigo" VerticalAlignment="Top" Width="55" Background="#FFEFEF6A" />
<Button Content="Valor Selecionado" HorizontalAlignment="Left" Margin="564,309,0,53" Name="btnPegarSelecao" Width="102" Click="btnPegarSelecao_Click" />
</Grid>
</Window>
|
Vamos agora definir o código do arquivo MainWindow.xaml.cs
Inicie declarando os seguintes namespaces:
using System;
using System.Windows;
using System.Data;
using System.Data.SqlClient
A seguir no início do arquivo defina a string de conexão usada para acessar o banco de dados SQL Server:
SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\dados\Teste.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")
Vamos definir a rotina VinculaDados() que deverá acessar a tabela candidatos e exibir o seu conteúdo no controle DataGrid - macDataGrid:
public void VinculaDados()
{
try
{
conn.Open();
SqlCommand comm = new SqlCommand("SELECT * FROM Candidatos", conn);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(comm);
da.Fill(ds);
macDataGrid.ItemsSource = ds.Tables[0].DefaultView;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
finally
{
conn.Close();
}
}
|
Esta rotina será chamada no evento Window_Loaded()
private void Window_Loaded(object sender, RoutedEventArgs e)
{
VinculaDados();
}
|
No evento Click do botão de comando Inserir temos o código que usa a instrução SQL Insert Into para incluir um novo registro na tabela Candidatos:
private void btnInserir_Click(object sender, RoutedEventArgs e)
{
try
{
conn.Open();
SqlCommand comm = new SqlCommand("INSERT INTO Candidatos VALUES('" + txtNome.Text + "'," + txtClassificacao.Text + ")", conn);
comm.ExecuteNonQuery();
limpaTexto();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
finally
{
conn.Close();
VinculaDados();
}
}
|
O botão Atualizar possui o código abaixo no evento Click que usa instrução SQL Update/Set para atualizar os dados da tabela :
private void btnAtualizar_Click(object sender, RoutedEventArgs e)
{
try
{
conn.Open();
SqlCommand comm = new SqlCommand("UPDATE Candidatos SET nome='" + txtNome.Text + "',classificacao=" + txtClassificacao.Text + "WHERE id=" + txtCodigo.Text + "", conn);
comm.ExecuteNonQuery();
limpaTexto();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
finally
{
conn.Close();
VinculaDados();
}
}
|
Para deletar um registro temos o código a seguir no evento Click do botão Deletar, que usa a instrução SQL: Delete From :
private void btnDeletar_Click(object sender, RoutedEventArgs e)
{
if (string.IsNullOrEmpty(txtCodigo.Text))
{
MessageBox.Show("Informe um código para deletar !");
return;
}
try
{
conn.Open();
SqlCommand comm = new SqlCommand("DELETE FROM Candidatos WHERE id=" + txtCodigo.Text + "", conn);
comm.ExecuteNonQuery();
limpaTexto();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
finally
{
conn.Close();
VinculaDados();
}
}
|
A rotina pegaLinhaSelecionada permite obter os valores de uma linha selecionada e preencher os controles TextBox com as informações:
public void pegaLinhaSelecionada()
{
string valor = null;
try
{
System.Data.DataRowView drv = (System.Data.DataRowView)this.macDataGrid.SelectedItem;
valor = drv[0].ToString();
}
catch
{
MessageBox.Show("Selecione uma linha para atualizar.");
return;
}
if (string.IsNullOrWhiteSpace(valor))
{
MessageBox.Show("Selecione uma linha para atualizar.");
return;
}
try
{
conn.Open();
SqlCommand comm = new SqlCommand("SELECT * FROM Candidatos where id = " + valor, conn);
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(comm);
da.Fill(dt);
//pega os valores da tabela e exibe nos TextBox
txtCodigo.Text = dt.Rows[0].Field<int>("id").ToString();
txtNome.Text = dt.Rows[0].Field<string>("nome");
txtClassificacao.Text = dt.Rows[0].Field<string>("classificacao");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
finally
{
conn.Close();
}
}
|
Finalmente a rotina limpa_Texto() limpa os controle TextBox usados:
public void limpaTexto()
{
txtCodigo.Clear();
txtNome.Clear();
txtClassificacao.Clear();
}
|
Abaixo vemos o projeto em execução:
![]() |
O projeto é bem simples e mostra uma das maneiras de realizarmos as operações de acesso e edição de dados em um banco de dados SQL Server usando ADO .NET.
Não se iluda. Embora o projeto funcione corretamente ele pode e deve ser melhorado nos seguintes aspectos:
Pegue o projeto completo
aqui:
WPF_CRUD.zip
Mat 22:36
Mestre, qual é o grande mandamento na lei?Mat 22:37
Respondeu-lhe Jesus: Amarás ao Senhor teu Deus de todo o teu coração, de toda a tua alma, e de todo o teu entendimento.Mat 22:38
Este é o grande e primeiro mandamento.Mat 22:39
E o segundo, semelhante a este, é: Amarás ao teu próximo como a ti mesmo.Mat 22:40
Destes dois mandamentos dependem toda a lei e os profetas.Referências: