none
¿Como validar un usuario y password sencillo con una base de datos de access y c#?

    Question

  • buenas tardes amigos, soy principiante

    me estoy volviendo loco tratando de validar un usuario y password desde una base de datos de access y c#, no quiero nada complicado de encritamiento ni nada de eso, es sencillo valido usuarios y si es positivo me deja entrar al programa que puede ser otro windows form.

     

    es una aplicacion de escritorio con windows form, he visto ejemplos pero todo es con sql y yo uso access, por favor demen su ayuda.

     

     


    Humberto Martinez
    Wednesday, February 01, 2012 7:25 PM

Answers

  • hola

    podrias usar

     

    private bool EsValido(string usuario, string password)
    {
    
    	string sql = "SELECT Count(*) FROM NombreTabla WHERE usuario = @usuario AND password = @pass";
    
    
    	using (OleDbConnection conn = new OleDbConnection("connection string")) {
    		conn.Open();
    
    		OleDbCommand cmd = new OleDbCommand(sql, conn);
    		cmd.Parameters.AddWithValue("@usuario", usuario);
    		cmd.Parameters.AddWithValue("@pass", password);
    
    		int val = Convert.ToInt32(command.ExecuteScalar());
    
    		return !(val == 0);
    
    	}
    
    }
    


     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by hum_marti Friday, February 03, 2012 6:26 PM
    Wednesday, February 01, 2012 7:43 PM
  • podrias hacer

     

    private void btnAutenticar_Click(...){

       if(EsValido(txtUsuario.Text, txtPassword.Text)){

           //aqui pasa la validacion

       }

    }

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by hum_marti Thursday, February 09, 2012 4:41 PM
    Friday, February 03, 2012 5:19 PM
  • 'System.Windows.Forms.Command' no contiene una definición para 'ExecuteScalar'

    es que deberias usar

    int val = Convert.ToInt32(cmd.ExecuteScalar());

     

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by hum_marti Friday, February 03, 2012 6:25 PM
    Friday, February 03, 2012 6:19 PM

All replies

  • hola

    podrias usar

     

    private bool EsValido(string usuario, string password)
    {
    
    	string sql = "SELECT Count(*) FROM NombreTabla WHERE usuario = @usuario AND password = @pass";
    
    
    	using (OleDbConnection conn = new OleDbConnection("connection string")) {
    		conn.Open();
    
    		OleDbCommand cmd = new OleDbCommand(sql, conn);
    		cmd.Parameters.AddWithValue("@usuario", usuario);
    		cmd.Parameters.AddWithValue("@pass", password);
    
    		int val = Convert.ToInt32(command.ExecuteScalar());
    
    		return !(val == 0);
    
    	}
    
    }
    


     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by hum_marti Friday, February 03, 2012 6:26 PM
    Wednesday, February 01, 2012 7:43 PM
  • y como le diria que si encontro algo me lleve a un formulario donde esta el programa a usar?

    otra cosa este codigo lo uso en el mismo form donde esta diseñado para que entre el usuario?


    Humberto Martinez
    Wednesday, February 01, 2012 7:51 PM
  • alli solo autenticas

    recuoperar la info podria ser como lo planteo aqui

    ADO.NET Parte 4 Actualización Información Ms Access

    ADO.NET - Parte 2 - Recuperar Información MS  Access

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Wednesday, February 01, 2012 7:53 PM
  • amigo el
    connection string

    que se configura en el XML como seria para Access??

    Humberto Martinez
    Wednesday, February 01, 2012 8:05 PM
  • ¿Qué arquitectura o modelo de datos tienes?
     
    Asumiendo que tienes una tabla con un campo UserID y un campo Password, bastaría con hacer un select. Algo así, por ejemplo:
     
    bool authenticated = false;
     
    OdbcConnection cnn = new OdbcConnection();
    using (cnn)
    {
        cnn.ConnectionString = “<tu conexión odbc>”;
        var cmd = cnn.CreateCommand();
     
        cmd.Text = “select count(*) from Usuarios where UserID = ? and Password = ?”;
        cmd.Parameters.AddWithValue(“@p1”, “fgomez”);
        cmd.Parameters.AddWithValue(“@p2”, “99901IYA”);
     
        long count = (long)cmd.ExecuteScalar();
     
        authenticated = count > 0;
    }
     
    Saludos.


    Fernando A. Gómez F.
    fermasmas.wordpress.com
    Galería de ejemplos
    Wednesday, February 01, 2012 9:15 PM
  • exactamente como lo observas en el articulo

    alli uso access para trabajar los datos, de la misam forma en como deberias hacerlo

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Thursday, February 02, 2012 2:13 AM
  • Amigo tengo algunas preguntas:

     

    no soy experto disculpame, ¿COMO PROGRAMO EL BOTON DE ENTRADA QUE EJECUTARA EL CODIGO QUE ME DISTES para que cuando le den clic me lleve a un formulario que se llama (principal.cs)?

     

     

    private bool EsValido(string usuario, string password)
    {
    
    	string sql = "SELECT Count(*) FROM NombreTabla WHERE usuario = @usuario AND password = @pass";
    
    
    	using (OleDbConnection conn = new OleDbConnection("connection string")) {
    		conn.Open();
    
    		OleDbCommand cmd = new OleDbCommand(sql, conn);
    		cmd.Parameters.AddWithValue("@usuario", usuario);
    		cmd.Parameters.AddWithValue("@pass", password);
    
    		int val = Convert.ToInt32(cmd.ExecuteScalar());
    
    		return !(val == 0);
    
    	}
    
    }

    Humberto Martinez
    Friday, February 03, 2012 5:13 PM
  • podrias hacer

     

    private void btnAutenticar_Click(...){

       if(EsValido(txtUsuario.Text, txtPassword.Text)){

           //aqui pasa la validacion

       }

    }

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by hum_marti Thursday, February 09, 2012 4:41 PM
    Friday, February 03, 2012 5:19 PM
  • amigo me manda el siguiente mensaje:

    Error    1    'System.Windows.Forms.Command' no es accesible debido a su nivel de protección

    Error    2    'System.Windows.Forms.Command' no contiene una definición para 'ExecuteScalar' 

    ------------------------------------------------------------------------------------------------------------------------

     

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.OleDb;

    namespace Validousuarios
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private bool CONSULTAR(string Usuario, string Password)
            {
                //Declaramos la variable de conexion


                //Agregamos la cadena de conexion a la base de datos

                string va = @"SELECT Count(*) FROM TablaValidar WHERE Usuario = @Usuario AND Password = @Password";



                using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Humberto\Documents\planilla.mdb"))
                {
                    conn.Open();

                    OleDbCommand cmd = new OleDbCommand(va, conn);

                    cmd.Parameters.AddWithValue("@Usuario", Usuario);
                    cmd.Parameters.AddWithValue("@Password", Password);


                    int val = Convert.ToInt32(Command.ExecuteScalar());

                    return !(val == 0);


                }

            }

            private void button1_Click(object sender, EventArgs e)
            {
                if (CONSULTAR(txtUsuario.Text, txtPassword.Text))
                {

                    principal f2 = new principal();
                    //f2.MdiParent = this;
                    f2.Show();

                }


            }
        }
    }


    Humberto Martinez
    Friday, February 03, 2012 6:09 PM
  • 'System.Windows.Forms.Command' no contiene una definición para 'ExecuteScalar'

    es que deberias usar

    int val = Convert.ToInt32(cmd.ExecuteScalar());

     

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by hum_marti Friday, February 03, 2012 6:25 PM
    Friday, February 03, 2012 6:19 PM