VB.NET 2005 - Criando uma aplicação Windows Completa: Locadora de Filmes - Parte 3
Continuando o desenvolvimento do nosso projeto Locadora de Filmes no Visual Basic 2005 Express Edition este artigo irá continuar a mostrar a implementação da interface do usuário. Se você esta chegando agora recomendo leia os artigos :
VB.NET 2005 - Criando uma aplicação completa : Locadora de Filmes I
VB.NET 2005 - Criando uma aplicação completa : Locadora de Filmes II
Para saber o que mudou na versão do VS 2012 Acompanhe o Curso - VB .NET - ADO .NET Prático (Curso) |
Neste artigo vou mostrar como implementar os formulários Login.vb e Acesso.vb.
Eu não vou usar o assistente do VB2005 para criar estes formulários como uma forma de mostrar que você pode criar, a seu critério, e, via código, funcionalidades de acesso a dados em formulários Windows Forms.
Implementando o formulário de Login
Como já vimos no artigo anterior o formulário de login - Login.vb - foi criado a partir de um modelo já existente no VB 2005.
O formulário login.vb permite efetuar
uma validação do usuário com nome e senha. Vamos implementar o recurso criando uma tabela chamada Usuarios com os campos: nomeUsuario e SenhaId. A senha será armazenada na forma de um Hash que iremos gerar usando uma classe. Incluímos um controle CheckBox para permitir que o nome do usuário seja armazenado na aplicação. |
O código do evento Click do botão OK para este formulário é exibido abaixo:
Nota: Não esqueça de declarar os seguintes imports: Imports System.Data.SqlClient
Private
Sub OK_Click(ByVal
sender As System.Object, ByVal e
As System.EventArgs) Handles OK.Click
Dim comando As New SqlCommand Dim senhaID As String
conn.Open() comando.Connection = conn comando.CommandText = "SELECT senhaID FROM usuarios Where nomeUsuario=@nomeUsuario" comando.Parameters.AddWithValue("@nomeUsuario", UsernameTextBox.Text)
conn.Close() If chkLembraUsuario.Checked Then My.Settings.Usuario = UsernameTextBox.TextMy.Settings.Save() Else My.Settings.Usuario = "" End IfIf util.GeraHash(PasswordTextBox.Text).Equals(senhaID) Then My.Forms.Principal.Show() Me.Hide() Else MessageBox.Show("Senha/Usuário Incorreto(s)", "Senha incorreta", MessageBoxButtons.OK, MessageBoxIcon.Information) PasswordTextBox.Focus() End If Catch ex As SqlException MessageBox.Show("Erro ao efetuar a conexão com a base de dados : " + ex.Message) conn.Dispose() End Try End Sub |
Explicando o código:
A linha de código:
conn.ConnectionString = My.Settings.LocadoraConnectionString
permite a recuperação da string de conexão usando o recurso My.Settings
Após abrir a conexão criamos um comando com a instrução SQL que irá selecionar a senha da tabela usuarios onde o nome do usuário é passado como parâmetro conforme o código abaixo:
comando.Connection = conn
comando.CommandText =
"SELECT senhaID FROM usuarios Where nomeUsuario=@nomeUsuario"comando.Parameters.AddWithValue("@nomeUsuario", UsernameTextBox.Text)
A seguir obtemos o valor da Senha através da execução do método ExecuteScalar
O objeto
Command fornece o método
ExecuteScalar que permite retornar um valor único de uma fonte de
dados. Este método executa uma consulta e retorna a primeira coluna da
primeira linha do conjunto de registros retornado O método ExecuteScalar é o meio mais rápido de se acessar e retornar dados em um base de dados. |
senhaID = comando.ExecuteScalar
Verificamos se o checkbox esta marcado; neste caso salvamos o nome do usuário nas configurações da aplicação.
If chkLembraUsuario.Checked Then
My.Settings.Usuario = UsernameTextBox.TextMy.Settings.Save()
Else
My.Settings.Usuario = ""
End IfA seguir o método GeraHash da classe util é usado para gerar o hash da senha informada para comparar com o hash armazenado no banco de dados.(isto será feito via formulário acesso.vb).
If util.GeraHash(PasswordTextBox.Text).Equals(senhaID) Then
My.Forms.Principal.Show()
Me.Hide()
Else
MessageBox.Show("Senha/Usuário Incorreto(s)", "Senha incorreta", MessageBoxButtons.OK, MessageBoxIcon.Information)
PasswordTextBox.Focus()
End If
Nota: O recurso My usado em My.Forms.Principal.Show() permite exibir o formulário de forma rápida e direta.
Para implementar A classe util e seu método GeraHash inclua um novo módulo de classe no projeto. Menu Project opção Add Class inclua o módulo dando ao mesmo o nome util.vb. A seguir inclua o código abaixo na classe:
Imports System.Security.CryptographyImports System.textPublic Class util
'Cria um objeto enconding para assegurar o padrão 'de encondig para o texto origem Dim Ue As New UnicodeEncoding()
End Function
|
Implementando o formulário de Acesso
O formulário acesso permite o cadastramento de usuários e senhas na base de dados Acesso.mdb , tabela Usuarios. São armazenados o nome do usuário e o hash da senha informada.
Os demais componentes do formulário são:
|
O código do evento Click do botão Registrar é mostrado a seguir:
Private
Sub btnRegistrar_Click(ByVal
sender As System.Object, ByVal e
As System.EventArgs) Handles
btnRegistrar.Click
Dim comando As New SqlCommand Dim reg As Integer
MessageBox.Show("Informe um valor válido.") txtUsuario.Focus() Exit Sub End IfIf txtsenha.Text = "" Then MessageBox.Show("Informe um valor válido.") txtsenha.Focus() Exit Sub End IfIf Not txtsenha.Text.Equals(txtSenha2.Text) Then MessageBox.Show("A senha não confere.") txtSenha2.Focus() Exit Sub End IfTry conn.Open() comando.Connection = conn comando.CommandText = "INSERT INTO Usuarios(nomeUsuario,senhaID) values(@Usuario,@senha)" comando.Parameters.AddWithValue("@Usuario", txtUsuario.Text) comando.Parameters.AddWithValue("@senha", util.GeraHash(txtsenha.Text))
reg = comando.ExecuteNonQuery()
MessageBox.Show(reg.ToString + " registro de Usuário incluido com sucesso.")Catch ex As SqlException MessageBox.Show("Erro ao efetuar a conexão com a base de dados : " + ex.Message) Finally conn.Close() conn.Dispose() End Try End Sub
|
Neste código estamos incluindo, via instrução SQL INSERT INTO, o nome do usuário e a senha informada na tabela usuarios. Os parâmetros são montados com os dados das caixas de texto, e, o método GeraHash() é usado para gerar o hash do texto da senha informado.
conn.Open()
comando.Connection = conn
comando.CommandText =
"INSERT INTO Usuarios(nomeUsuario,senhaID) values(@Usuario,@senha)"comando.Parameters.AddWithValue("@Usuario", txtUsuario.Text)
comando.Parameters.AddWithValue("@senha", util.GeraHash(txtsenha.Text))
O método executeNonQuery() é usado para executar a consulta ação. Este método é usado para executar um comando SQL que não retorna registros.
reg = comando.ExecuteNonQuery()
Nossa aplicação já possui uma forma de cadastrar os seus usuários via formulário acesso.vb e de permitir a validação dos mesmos para acesso a aplicação via formulário login.vb.
Nota: Para permitir que a mudança de um campo para outro do formulário seja possível com o pressionamento da tecla ENTER altere a propriedade KeyPreview do formulário para True e inclua o seguinte trecho de código
Private
Sub Form1_KeyPress(ByVal
sender As
Object,
ByVal e
As System.Windows.Forms.KeyPressEventArgs)
Handles
MyBase.KeyPress
e.Handled = True SendKeys.Send("{TAB}") End If
|
Aguarde a continuação no artigo : VB.NET 2005 - Criando uma aplicação Windows Completa: Locadora de Filmes - Parte 4
VB.NET 2005 , é fácil, é simples, é legal. Divirta-se...
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: