Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fddsantos

Fazer login e recolher os dados para passar para outro form

Recommended Posts

Bom dia.

Eu estou a fazer um programa em C#.

Eu no meu programa estou a usar com base de dados access.

O que pretendo fazer e não consigo é fazer o login num form e depois ir buscar os dados desse utilizador para depois no form do utilizador aparecer la os dados desse utilizador.

O que estou a fazer para o login é abrir o formUsuario e escondelo e depois por visivel o do login, e se encontrar o usuario o formLogin desaparece e vica visivel o form do usuario.

O codigo que estou a usar para o login é este:

 

Program:

 

namespace MasterDent

{

static class Program

{

/// <summary>

/// The main entry point for the application.

/// </summary>

[sTAThread]

static void Main()

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(new FormUsuario());

}

}

}

 

FormUsuario:

 

private void FormUsuario_Load(object sender, EventArgs e)

{

 

this.Visible = false;

FormLogin fl = new FormLogin();

fl.ShowDialog();

 

if (!fl.LoginOK)

{

this.Close();

Application.Exit();

}

else

{

fl.Close();

this.Visible = true;

 

}

}

 

FormLogin:

 

bool loginOK = false;

 

public bool LoginOK

{

get { return loginOK; }

set { loginOK = value; }

}

 

private void ValidarLogin()

{

 

List<Cliente> listClientes = new List<Cliente>();

OleDbConnection accessConnection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=.\bd1.1.accdb");

 

OleDbCommand oleCommand = new OleDbCommand("Select count (*) From Users Where Users = @Users And Password = @Password", accessConnection);

 

oleCommand.Parameters.Add("@Users", OleDbType.Char).Value = textUsername.Text;

oleCommand.Parameters.Add("@Password", OleDbType.Char).Value = textPassword.Text;

accessConnection.Open();

 

int i = int.Parse(oleCommand.ExecuteScalar().ToString());

 

if (i > 0)

{

loginOK = true;

this.Close();

}

else

{

MessageBox.Show("Username ou Password inválida!");

}

 

accessConnection.Close();

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá fddsantos, ha uns tempos atras resolvi da seguinte forma:

 

Criei uma classe publica para guardar os dados e pode-los acessar de qualquer formulário:

public class GuardaUser
   {
       public static string login;

       public static string tipo;
   }

 

No frmLogin após validar o usuário, passo os dados para a classe GuardaUser:

private void btOk_Click(object sender, EventArgs e)
       {
           if (txtLogin.Text != string.Empty & txtSenha.Text != string.Empty)
           {
               Usuario user = new Usuario();
               user.Login = txtLogin.Text;
               user.Senha = txtSenha.Text;

               UsuarioDAL userDal = new UsuarioDAL();

               if (userDal.validaUsuario(user) != null)
               {
                   Util ut = new Util();
                   ut = userDal.validaUsuario(user);
                   GuardaUser.login = ut.login;
                   GuardaUser.tipo = ut.tipo;
                   this.Hide();
               }
               else
               {
                   MessageBox.Show("Usuário ou senha inválido!");
                   txtLogin.Focus();
               }
           }
           else
           {
               MessageBox.Show("Campo usuário e senha não podem estar em branco");
           }

 

consigo acessar a classe GuardaUser de qualquer formulário agora, e pegar os dados. Nesse sistema eu deveria saber qual usuário fez a requisição, e também

guardava o tipo do usuário para fazer validações de permissão.

 

requisicao.LoginUsuario = GuardaUser.login;

Compartilhar este post


Link para o post
Compartilhar em outros sites

desculpa mas o que é o "UsuarioDal" ?

 

UsuárioDal é minha classe de acesso a dados, é ela quem faz o select no banco e me retorna os dados do usuário se o mesmo existir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que faz a tua class "Util" ?

 

Nada de mais, apenas armazena os dados do usuário. Esse sistema ja fiz ha algum tempo, e só olhando agora me questionei sobre ela,não lembro o motivo de te-la criado na época,mas me pareceu meio inutil vendo hoje, sendo que poderia ter usado a classe usuário mesmo.

 

A classe Util ta parecendo meia INUtil hoje rs...

Compartilhar este post


Link para o post
Compartilhar em outros sites

podes me mostrar so a class "UsuarioDAL" ?

 

public class UsuarioDAL
   {
       public void Incluir(Usuario user)
       {
           NpgsqlConnection cn = new NpgsqlConnection();

           try
           {
               cn.ConnectionString = Dados.StringDeConexao;
               NpgsqlCommand cmd = new NpgsqlCommand();
               cmd.Connection = cn;
               cmd.CommandText = "insert into usuario values(@login,@nome,@codsetor,@senha,@tipo)";
               cmd.Parameters.Add("@login", user.Login);
               cmd.Parameters.Add("@nome", user.Nome);
               cmd.Parameters.Add("@codsetor", user.CodSetor);
               cmd.Parameters.Add("@senha", user.Senha);
               cmd.Parameters.Add("@tipo", user.Tipo);

               cn.Open();
               cmd.ExecuteNonQuery();
           }
           catch (SqlException ex)
           {
               throw new Exception("Servidor Postgre Erro: " + ex.Number);
           }
           catch (Exception ex)
           {
               throw new Exception(ex.Message);
           }
           finally
           {
               cn.Close();
           }
       }

       public void Alterar(Usuario user)
       {
           NpgsqlConnection cn = new NpgsqlConnection();

           try
           {
               cn.ConnectionString = Dados.StringDeConexao;
               NpgsqlCommand cmd = new NpgsqlCommand();
               cmd.Connection = cn;
               cmd.CommandText = "update usuario set nome=@nome,codsetor=@codsetor,senha=@senha,tipo=@tipo where login=@login";
               cmd.Parameters.Add("@login", user.Login);
               cmd.Parameters.Add("@nome", user.Nome);
               cmd.Parameters.Add("@codsetor", user.CodSetor);
               cmd.Parameters.Add("@senha", user.Senha);
               cmd.Parameters.Add("@tipo", user.Tipo);

               cn.Open();
               cmd.ExecuteNonQuery();
           }
           catch (SqlException ex)
           {
               throw new Exception("Servidor Postgre Erro: " + ex.Number);
           }
           catch (Exception ex)
           {
               throw new Exception(ex.Message);
           }
           finally
           {
               cn.Close();
           }
       }

       public void Excluir(string login)
       {
           NpgsqlConnection cn = new NpgsqlConnection();

           try
           {
               cn.ConnectionString = Dados.StringDeConexao;
               NpgsqlCommand cmd = new NpgsqlCommand();
               cmd.Connection = cn;
               cmd.CommandText = "delete from usuario where login = @login";
               cmd.Parameters.Add("@login", login);

               cn.Open();

               int resultado = cmd.ExecuteNonQuery();
               if (resultado != 1)
               {
                   throw new Exception("Não foi possível excluir o usuario " + login);
               }
           }
           catch (SqlException ex)
           {
               throw new Exception("Servidor Postgre Erro: " + ex.Number);
           }
           catch (Exception ex)
           {
               throw new Exception(ex.Message);
           }
           finally
           {
               cn.Close();
           }
       }

       public DataTable listarUsuario()
       {
           DataTable tabela = new DataTable();
           string strSql = "select * from usuario";

           NpgsqlDataAdapter da = new NpgsqlDataAdapter(strSql,Dados.StringDeConexao);
           da.Fill(tabela);
           return tabela;
       }

       public Util validaUsuario(Usuario usuario)
       {
           NpgsqlConnection cn = new NpgsqlConnection();

           try
           {

               Util util = new Util();

               NpgsqlDataReader reader;

               cn.ConnectionString = Dados.StringDeConexao;
               NpgsqlCommand cmd = new NpgsqlCommand();
               cmd.Connection = cn;
               cmd.CommandText = "select login,senha,tipo from usuario where login = @login and senha = @senha";
               cmd.Parameters.Add("@login", usuario.Login);
               cmd.Parameters.Add("@senha", usuario.Senha);

               cn.Open();

               reader = cmd.ExecuteReader();

               if (reader.HasRows)
               {
                   reader.Read();
                   util.login = reader[0].ToString();
                   util.tipo = reader[2].ToString();
                   return util;
               }
               else
               {
                   return null;
               }

           }
           catch (SqlException ex)
           {
               throw new Exception("Servidor Postgre Erro:" + ex.Number);
           }
           catch (Exception ex)
           {
               throw new Exception(ex.Message);
           }
           finally
           {
               cn.Close();
           }
       }
   }

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.