fddsantos 0 Denunciar post Postado Maio 11, 2011 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
m3oliveira 0 Denunciar post Postado Maio 11, 2011 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
fddsantos 0 Denunciar post Postado Maio 11, 2011 desculpa mas o que é o "UsuarioDal" ? Compartilhar este post Link para o post Compartilhar em outros sites
m3oliveira 0 Denunciar post Postado Maio 11, 2011 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
fddsantos 0 Denunciar post Postado Maio 11, 2011 obrigada, estou tentando agora aplicar o codigo Compartilhar este post Link para o post Compartilhar em outros sites
m3oliveira 0 Denunciar post Postado Maio 11, 2011 obrigada, estou tentando agora aplicar o codigo Por nada. Compartilhar este post Link para o post Compartilhar em outros sites
fddsantos 0 Denunciar post Postado Maio 11, 2011 o que faz a tua class "Util" ? Compartilhar este post Link para o post Compartilhar em outros sites
m3oliveira 0 Denunciar post Postado Maio 11, 2011 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
fddsantos 0 Denunciar post Postado Maio 11, 2011 podes me mostrar so a class "UsuarioDAL" ? Compartilhar este post Link para o post Compartilhar em outros sites
m3oliveira 0 Denunciar post Postado Maio 11, 2011 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