question

Como construir uma tela de login c# com os dados de usuarios armazenados em MS Access?

Isso é o que eu tenho até agora:

usando o sistema;
utilizando System.Collections.Generic;
usando System. ComponentModel;
using System. Data;
usando System. Drawing;
usando System. Linq;
usando System. Text;
usando System.Windows.Forms;
usando o System.Data.OleDb;

namespace Log_In_It1
{
public partial class Form1: Form
{

//set up a variável global para gerenciar a conexão com o banco de dados do Access
OleDbConnection myConnection = OleDbConnection() novo;

Form1() pública
{
InitializeComponent ();
}

//The btnSubit que botão é usado para chamar a função authenticatePassword(), que retorna true se a senha for encontrada
//or false se não.
Private void button1_Click (object sender, EventArgs e)
{
seleção bool = authenticatePassword();
//If verdadeiro abrir o formulário principal se false exibir uma caixa de mensagem de erro
se (verificar = = true)
MessageBox. Show ("logar");
outra coisa
MessageBox. Show ("seu nome de usuário ou senha está incorreta, por favor tente novamente");
}

//This função retorna true se a senha for encontrado ou false se não.
//it faz isso através do estabelecimento de uma conexão com o banco de dados, em seguida, procura os registros de uma correspondência
bool authenticatePassword()
{

//Open a conexão para o banco de dados usando o nome de banco de dados e de seqüência de caracteres de conexão do access 2007:
myConnection.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Fonte = Ffestiniog Railway reservas e Database.accdb de gestão de trem");


//Open a conexão
myConnection.Open();

//set up temporário dataset e datatable em memória
DataSet ds = new DataSet();
DataTable dt = DataTable() novo;
//Add o datatable para o dataset
DS.Tables.Add(dt);
//Send um comando Sql Select para pesquisar a tabela de usuários do banco de dados de login
OleDbDataAdapter da = new OleDbDataAdapter ("SELECT de usuários", myConnection);
//Fill o adaptador de dados na memória com as informações da tabela de usuário de banco de dados
da.Fill(DT);

//Search cada linha na tabela de correspondência de nome de usuário e a senha digitada do formulário da interface do usuário
foreach (DataRow r em dt.Linhas)
se (r [0].ToString () = = txtusername.Texto && r [1].ToString () = = txtpassword.Texto)
{
//If corresponder foundclose a conexão com o banco de dados e retornar true
myConnection.Close();
retornar true;
}
//If nenhuma correspondência for encontrada retornam false
myConnection.Close();
return false;

}
}
}
Tudo que faz é dizer-me que a senha está errada (mesmo quando seu direito).
resposta Resposta
em seu loop de foreach(), parece-me que ele só vai ver o primeiro Datarow e retornar true ou false e se o usuário não é o primeiro na lista que vai sempre retornar false.

Você precisa ir até os usuários até encontrar o correto e, em seguida, fazer um retorno verdadeiro/falso, se a senha está correta, ou não.

Comentários Comentários

Guest
Carlos Benítez na 6 Nov 2013
0
Você não quer enviar a tabela de usuário inteira para o programa.

No access, você configurar uma consulta ou procedimento armazenado que traz o nome de usuário e senha. A única coisa que é retornada para o programa é o nome de usuário. Então você simplesmente olhar para ver quantos registros você tem. Você só deve ter 1 registro ou Zero registros.

O seu comentário
Acho que a resposta não está correta ou que você gostaria de acrescentar mais
alguma informação? Envie o seu comentário abaixo..

Guest


HTML não é permitido!

Image Code

Digite os caracteres que aparecem na imagem por isso sabemos que você é humano!

Receber um email quando alguém acrescenta outro comentário a esta pergunta


Topo da página


Home  Terms
Copyright © Accelerated Ideas 2005-2024
All rights reserved