 VB.NET 2005  
- Criando uma aplicação Windows Completa: Locadora de Filmes - Parte 3
 
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 ThenMy.Settings.Usuario = UsernameTextBox.Text My.Settings.Save() Else My.Settings.Usuario = ""End If 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 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:
| ImportsSystem.Security.Cryptography ImportsSystem.text PublicClass 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 SubEnd If If txtsenha.Text = "" Then MessageBox.Show("Informe um valor válido.") txtsenha.Focus() Exit SubEnd If If Not txtsenha.Text.Equals(txtSenha2.Text) Then MessageBox.Show("A senha não confere.") txtSenha2.Focus() Exit SubEnd If Try 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 TryEnd 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 Facebook
  
 Compartilhe no Twitter
 
Compartilhe no Twitter
Referências: