gregurs Posted April 22, 2012 at 11:48 PM Report #450644 Posted April 22, 2012 at 11:48 PM Boa noite pessoal estou a fazer um programa com formulario de login em que os utilizadores estão numa bd o problema é que o programa me analiza linha a linha ou seja se tenho um registo na bbd não há problema mas se tenho dois e o segundo é o correto primeiro diz me que a passe está errada e depois diz que está tudo ok. Alguem me pode ajudar com isto? o código que tenho no form Login é este string connection = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"; SqlConnection cn = new SqlConnection(connection); try { cn.Open(); } catch (Exception) { MessageBox.Show("Did not connect"); } SqlCommand cmd = new SqlCommand("SELECT * FROM [Registo]", cn); cmd.Connection = cn; SqlDataReader reader = null; reader = cmd.ExecuteReader(); while (reader.Read()) if (textBox1.Text == (reader["Utilizador"].ToString()) && textBox2.Text == (reader["Passe"].ToString())) { MessageBox.Show("Login com sucesso"); textBox1.Text = ""; textBox2.Text = ""; } else { MessageBox.Show("Utilizador ou passe errado"); textBox1.Text = ""; textBox2.Text = ""; }
petvetbr Posted April 23, 2012 at 12:06 AM Report #450646 Posted April 23, 2012 at 12:06 AM Geralmente para login não se traz todos os registros como você está fazendo abaixo: SELECT * FROM [Registo] e sim algo baseado no login como: SELECT * FROM [Registo] WHERE Utilizador = 'coloque aqui o login informado'; como regra, todo login precisa ser único, então só pode haver 1 ou zero registros trazidos pela consulta. Aí é só comparar a senha fornecida com o que está no banco e dados. Uma dica: Não se armazena a senha que foi entrada pelo usuário em um banco de dados e sim um "hash" que é uma forma codificada da senha. Procure aprender sobre isto. Fernando Lage Bastos - MCP/MCTS/MCPD
gregurs Posted April 23, 2012 at 09:45 AM Author Report #450670 Posted April 23, 2012 at 09:45 AM Quando colocas este código o 'coloque aqui o login informado' estas te a referir a um nome de utilizador ou a uma textbox? Experimentei a textbox e dá erro não lhe posso por um nome de utilizador senão só me aceita o nome que puser Código (SQL): [seleccione] SELECT * FROM [Registo] WHERE Utilizador = 'coloque aqui o login informado';
Gonka Posted April 23, 2012 at 09:48 AM Report #450672 Posted April 23, 2012 at 09:48 AM Tens que usar parâmetros.
gregurs Posted April 23, 2012 at 10:10 AM Author Report #450677 Posted April 23, 2012 at 10:10 AM Com este codigo já consegui, obrigado Select * FROM Registo Where Utilizador = '" +textBox1.Text+"'" outra coisa no form registar utilizador tenho este código sabes me dizer como posso impedir utilizadores repetidos string connection = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"; SqlConnection cn = new SqlConnection(connection); try { cn.Open(); } catch (Exception) { MessageBox.Show("Did not connect"); } string username = textBox1.Text; string password = textBox2.Text; string sqlquery = ("Select * FROM Registo Where Utilizador * '" +textBox1.Text+"'"); sqlquery = "INSERT INTO [Registo] (Utilizador,Passe) VALUES('"+textBox1.Text+"','"+textBox2.Text+"')"; SqlCommand comand = new SqlCommand (sqlquery,cn); comand.ExecuteNonQuery(); MessageBox.Show ("Registo concluido com sucesso"); textBox1.Text = ""; textBox2.Text = "";
Gonka Posted April 23, 2012 at 10:40 AM Report #450685 Posted April 23, 2012 at 10:40 AM Como é que consegues inserir utilizadores repetidos? Qual é a chave da tabela? Se tiveres uma chave, coloca o campo "Utilizador" como "Unique".
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now