WPF - Incluir, Editar e Deletar Dados com MS Access (revisitado) |
Neste artigo vou mostrar como criar uma aplicação WPF e realizar as operações básicas para incluir, editar e deletar dados acessando um banco de dados Microsoft Access. |
|
A WPF foi lançada na versão 3.0 do .NET Framework e oferece uma base de recursos que trata de forma unificada as várias interfaces de usuário, podendo ser visto como um Framework unificado de apresentação gráfica. Em uma abordagem moderna o WPF oferece suporte para vídeo, gráficos de vários tipos, animação e documentos de diversos tipos com uma base comum para clientes do desktop e do Navegador.
O novo modelo de objetos apresentado pelo WPF usa classes mais modernas permitindo a criação de interface gráficas de uma forma mais simples e ágil.
A WPF apresenta como novidade a linguagem XAML que é baseada na XML mas voltada para apresentação gráfica ao usuário final. Assim esta tecnologia facilita a vida do desenvolvedor no sentido de que ele não precisa mais ter o conhecimento de várias tecnologias para criar ma interface com o usuário podendo usar os recursos integrados da WPF para criar interfaces ricas e consistentes.
Neste artigo eu vou apresentar um tutorial passo a passo de como criar uma aplicação WPF e acessar um banco de dados realizando o famoso CRUD (Create, Read , Update e Delete).
Recursos usados:
Nota: Baixe e use a versão Community 2015 do VS ela é grátis e é equivalente a versão Professional.
Criando o projeto no Visual Studio 2015 Community
Abra o VS 2015 Community e clique em New Project;
Selecione a linguagem Visual C# e o template WPF Application;
Informe o nome Wpf_Crud_MSAccess e clique no botão OK;
A seguir a partir da ToolBox inclua os seguintes controles no arquivo MaindWindow.xaml :
Disponha os controles conforme o leiaute da figura abaixo:
O código XAML gerado é visto a seguir:
<Window x:Class="Wpf_Crud_MSAccess.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Wpf_Crud_MSAccess"
mc:Ignorable="d"
Title="Wpf - Crud Básico" Height="700" Width="900" Background="Bisque" WindowStartupLocation="CenterScreen" ResizeMode="NoResize">
<Window.Resources>
<Style TargetType="TextBlock">
<Setter Property="FontSize" Value="20"/>
<Setter Property="Width" Value="160"/>
<Setter Property="Margin" Value="10"/>
</Style>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="20"/>
<Setter Property="Width" Value="250"/>
<Setter Property="Margin" Value="10"/>
</Style>
</Window.Resources>
<DockPanel Name="dockMain" VerticalAlignment="top" HorizontalAlignment="Center" LastChildFill="False">
<StackPanel>
<Label Content="Cadastro de Alunos" HorizontalAlignment="Center" FontSize="36" FontWeight="Bold"></Label>
<WrapPanel>
<TextBlock Text="Código :"/>
<TextBox x:Name="txtCodigoAluno" />
</WrapPanel>
<WrapPanel>
<TextBlock Text="Nome :"/>
<TextBox x:Name="txtNomeAluno" />
</WrapPanel>
<WrapPanel>
<TextBlock Text="Gênero :"/>
<ComboBox FontSize="20" x:Name="ddlGenero" Width="250" Margin="10">
<ComboBoxItem Content="Selecione o Sexo" Selector.IsSelected="True" />
<ComboBoxItem Content="Masculino" />
<ComboBoxItem Content="Feminino" />
</ComboBox>
</WrapPanel>
<WrapPanel>
<TextBlock Text="Contato :"/>
<TextBox x:Name="txtContato" />
</WrapPanel>
<WrapPanel>
<TextBlock Text="Endereço :"/>
<TextBox x:Name="txtEndereco" TextWrapping="Wrap" AcceptsReturn="True" Height="75" />
</WrapPanel>
<WrapPanel Margin="0" HorizontalAlignment="Center" Height="59">
<Button x:Name="btnAdicionar" Content="Adicionar" FontSize="25" Width="120" Margin="5" Click="btnAdicionar_Click" />
<Button x:Name="btnEditar" Content="Editar" FontSize="25" Width="120" Margin="5" Click="btnEditar_Click" />
<Button x:Name="btnDeletar" Content="Deletar" FontSize="25" Width="120" Margin="5" Click="btnDeletar_Click" />
<Button x:Name="btnCancelar" Content="Cancelar" FontSize="25" Width="120" Margin="5" Click="btnCancelar_Click" />
<Button x:Name="btnSair" Content="Sair" FontSize="25" Width="120" Margin="5" Background="#FFF30B0B" Foreground="Bisque" Click="btnExit_Click" />
</WrapPanel>
<Label Content="Nenhum registro encontrado." Name="lblContador" HorizontalAlignment="Center" FontSize="16" FontWeight="Bold" Foreground="#FFE10000"></Label>
<WrapPanel Margin="20" HorizontalAlignment="Center">
<DataGrid AutoGenerateColumns="True" x:Name="dgDados" SelectionMode="Single" FontSize="15" Padding="5" Background="Black" />
</WrapPanel>
</StackPanel>
</DockPanel>
</Window> |
Definindo o código do projeto
Vamos definir agora o código do projeto no arquivo MainWindow.xaml.cs :
1- Declare os namespaces usados no arquivo:
using
System;2- Defina as variáveis objetos para a conexão e para o DataTable
OleDbConnection
con;
DataTable
dt;
3- No construtor da classe MainWindow, vamos criar uma nova conexão e definir a string de conexão com o banco de dados Cadastro.accdb e chamar o método VinculaDados() para exibir os dados da tabela Alunos no DataGrid:
public MainWindow()
{
InitializeComponent();
//conecta com o banco de dados
con = new OleDbConnection();
con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + AppDomain.CurrentDomain.BaseDirectory + "Cadastro.accdb"; // +";Persist security Info=false";
VinculaDados();
}
|
4- O código do método VinculaDados é dado a seguir:
//Exibe registros no grid
private void VinculaDados()
{
try
{
OleDbCommand cmd = new OleDbCommand();
if (con.State != ConnectionState.Open)
con.Open();
cmd.Connection = con;
cmd.CommandText = "select * from Alunos";
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
dt = new DataTable();
da.Fill(dt);
dgDados.ItemsSource = dt.AsDataView();
if (dt.Rows.Count > 0)
{
lblContador.Visibility = System.Windows.Visibility.Hidden;
dgDados.Visibility = System.Windows.Visibility.Visible;
}
else
{
lblContador.Visibility = System.Windows.Visibility.Visible;
dgDados.Visibility = System.Windows.Visibility.Hidden;
}
}
catch(Exception ex)
{
MessageBox.Show("Erro : " + ex.Message, "Erro", MessageBoxButton.OK, MessageBoxImage.Error);
}
} |
O código acima abre uma conexão com o banco de dados e usa a instrução SQL - Select * from Alunos - para gerar um DataTable com os dados dos alunos vinculando-os ao datagrid via propriedade ItemsSource.
4- Código do evento Click do botão Adicionar :
private void btnAdicionar_Click(object sender, RoutedEventArgs e)
{
OleDbCommand cmd = new OleDbCommand();
if (con.State != ConnectionState.Open)
con.Open();
cmd.Connection = con;
if (txtCodigoAluno.Text != "")
{
if (txtCodigoAluno.IsEnabled == true)
{
if (ddlGenero.Text != "Selecione o gênero")
{
cmd.CommandText = "insert into Alunos(Nome,Sexo,Contato,Endereco) Values(" + txtNomeAluno.Text + "','" + ddlGenero.Text + "',"
+ txtContato.Text + ",'" + txtEndereco.Text + "')";
cmd.ExecuteNonQuery();
VinculaDados();
MessageBox.Show("Aluno adicionado com sucesso...");
LimparTudo();
}
else
{
MessageBox.Show("Selecione o sexo do aluno....");
}
}
else
{
cmd.CommandText = "update Alunos set Nome='" + txtNomeAluno.Text + "',Sexo='" + ddlGenero.Text + "',Contato=" + txtContato.Text +
",Endereco='" + txtEndereco.Text + "' where AlunoId=" + txtCodigoAluno.Text;
cmd.ExecuteNonQuery();
MessageBox.Show("Detalhes do Aluno atualizado com sucesso...");
VinculaDados();
}
}
else
{
MessageBox.Show("Informe o Código do Aluno......");
}
} |
O código acima é usado para adicionar um novo aluno e também para alterar os dados de um aluno.
Se o código do aluno estiver habilitado então usando a instrução SQL Insert Into para incluir as informações dos TextBox na tabela Alunos caso contrário usamos a instrução SQL Update para atualizar os dados.
5- Código do evento Click do botão Editar :
private void btnEditar_Click(object sender, RoutedEventArgs e)
{
if (dgDados.SelectedItems.Count > 0)
{
DataRowView row = (DataRowView)dgDados.SelectedItems[0];
txtCodigoAluno.Text = row["AlunoId"].ToString();
txtNomeAluno.Text = row["Nome"].ToString();
ddlGenero.Text = row["Sexo"].ToString();
txtContato.Text = row["Contato"].ToString();
txtEndereco.Text = row["Endereco"].ToString();
txtCodigoAluno.IsEnabled = false;
btnAdicionar.Content = "Atualizar";
}
else
{
MessageBox.Show("Selecione um Aluno da lista...");
}
} |
No código do botão Editar obtemos a linha selecionada e exibimos os
valores nas caixas de texto. A seguir desabilitamos o código do aluno e
alteramos o texto do botão de Adicionar para Atualizar.
6- Código do evento Click do botão Deletar :
private void btnDeletar_Click(object sender, RoutedEventArgs e)
{
if (dgDados.SelectedItems.Count > 0)
{
DataRowView row = (DataRowView)dgDados.SelectedItems[0];
OleDbCommand cmd = new OleDbCommand();
if (con.State != ConnectionState.Open)
con.Open();
cmd.Connection = con;
cmd.CommandText = "delete from Alunos where AlunoId=" + row["AlunoId"].ToString();
cmd.ExecuteNonQuery();
VinculaDados();
MessageBox.Show("Aluno deletado com sucesso...");
LimparTudo();
}
else
{
MessageBox.Show("Selecione um Aluno da lista...");
}
} |
Neste código após abrirmos a conexão, usamos a instrução SQL delete from
- para deletar o aluno com o Id obtido da linha selecionada.
7- Código
do evento Click do botão Cancelar:
private void btnCancelar_Click(object sender, RoutedEventArgs e)
{
LimparTudo();
}
private void LimparTudo()
{
txtCodigoAluno.Text = "";
txtNomeAluno.Text = "";
ddlGenero.SelectedIndex = 0;
txtContato.Text = "";
txtEndereco.Text = "";
btnAdicionar.Content = "Adicionar";
txtCodigoAluno.IsEnabled = true;
} |
No botão Cancelar chamamos o método LimparTudo() que limpa o conteúdo dos TextBox , habilita o código do aluno e altera o texto do botão de Atualizar para Adicionar:
8- Código
do evento Click do botão Sair :
private void btnSair_Click(object sender, RoutedEventArgs e)
{
if (MessageBox.Show("Deseja Encerrar a Aplicação ?", "Encerrar", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
{
Application.Current.Shutdown();
}
}
|
Executando o projeto inicialmente teremos o seguinte resultado:
Selecionando um registro e clicando no botão Editar teremos o resultado abaixo:
Pegue o projeto completo aqui : Wpf_Crud_MSAccess.zip
Porque a palavra da cruz é loucura para os que perecem; mas para nós, que
somos salvos, é o poder de Deus.
Porque está escrito: Destruirei a sabedoria dos sábios, E aniquilarei a
inteligência dos inteligentes.
1 Coríntios 1:18,19
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?
|
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
Apresentando o WPF - Windows Presentation Foundation - Macoratti.net
WPF - Criando uma aplicação básica (para iniciantes) - Macoratti.net