none
Guardar id en sql de usuario que inicio sesion con c# RRS feed

  • Pregunta

  • Hola! alguien que pueda orientarme por favor, estoy trabajando en c# con base de datos en sql. Tengo un formulario para hacer login y resulta que al ingresar, se me presenta un formulario en el cual debo mandar a sql algunos datos, pero el problema es que tambien debo mandar el id de la persona que inicio la sesion. Ya he buscado y no encuentro algo concreto.
    viernes, 27 de marzo de 2020 22:51

Todas las respuestas

  • Hola Amuñoz

     

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, vamos a darte seguimiento e investigaremos para buscar la mejor respuesta para ti.

     

    Gracias por usar los foros de MSDN.

     

    Luis Diego Mora

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    viernes, 27 de marzo de 2020 23:46
    Moderador
  • hola

    que tipo tipo de aplicacion hablamos? winform, web. mobile

    >>Tengo un formulario para hacer login y resulta que al ingresar

    Como implementas el login? realizas un SELECT a la tabla de usuario, usando el nombre y passoword de la persona?

    si es asi porque cuando ejecutas el SELECT no recuperas el registro de ese usuario y tomas el valor de la columna Id

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    sábado, 28 de marzo de 2020 1:42
  • hola

    que tipo tipo de aplicacion hablamos? winform, web. mobile

    Como implementas el login? realizas un SELECT a la tabla de usuario, usando el nombre y passoword de la persona?

    Hola! estoy en c# tarbajando con windows form, este es el codigo que utilizo para hacer login, lo tengo en una tabla:

     public static int Autentificar(String pUsuarios, String pContrasena)
            {
                int resultado = -1;
    
                SqlConnection cn = Conexion();
                SqlCommand comando = new SqlCommand(string.Format("Select * From Usuarios Where Usuario = '{0}' and PwdCompare('{1}',Contrasena) = 1 ", pUsuarios, pContrasena), cn);
                cn.Open();
                SqlDataReader reader = comando.ExecuteReader();
    
                while (reader.Read())
                {
                    resultado = 50;
                }
    
                cn.Close();
                return resultado;
            }

    Y en mi form tengo e sigiente codigo en el boton de login:

    private void btnIniciar_Click(object sender, EventArgs e)
            {
                if (Personal.Autentificar(txtUsuario.Text, txtPass.Text) > 0)
                {
                    this.Hide();
                    FrmRegistrar f = new FrmRegistrar();
                    f.ShowDialog();
                }
                else
                    MessageBox.Show("Error en los datos");
            }
    Mi duda es, al momento de iniciar sesion y estar trabajando en otros formularios ya con el usuario autenticado, como saber quien es, he estado pensando en mostraro en un textbox, bueno que este oculto para de ahi guardarlo a mi otra tabla donde pide ese registro. Voy empezando en programacion y la verdad me complico un poco


    • Editado Amuñoz sábado, 28 de marzo de 2020 15:15 falto datos
    sábado, 28 de marzo de 2020 15:08
  • hola

    Para autenticar deberias usar algo como esto

    public static bool Autentificar(String pUsuarios, String pContrasena)
    {
    	using(SqlConnection cn = Conexion())
    	{
    		cn.Open();
    		
    		string query = "Select * From Usuarios Where Usuario = @usuario and PwdCompare(@password,Contrasena) = 1 ";
    		SqlCommand comando = new SqlCommand(, cn);
    		comando.Parameters.AddWithValue("@usuario", pUsuarios);
    		comando.Parameters.AddWithValue("@password", pContrasena);
    		
    		SqlDataReader reader = comando.ExecuteReader();
    
    		if(reader.Read())
    		{
    			return true;
    		}
    
    	}
    	return false;
    }  


    No se de dodne salio eso del -1 o del 50 que retornas, pero en una autenticacion eso no aplica

    Despues de autenticar obtienes al usuario

    public class Usuario
    {
    	public int Id {get;set;}
    	public int Nombre {get;set;}
    }
    
    public static Usuario ObtenerUsuario(String pUsuarios)
    {
    	
    	using(SqlConnection cn = Conexion())
    	{
    		cn.Open();
    		
    		string query = "Select Id, Nombre From Usuarios Where Usuario = @usuario";
    		SqlCommand comando = new SqlCommand(, cn);
    		comando.Parameters.AddWithValue("@usuario", pUsuarios);
    		
    		SqlDataReader reader = comando.ExecuteReader();
    
    		if(reader.Read())
    		{
    			return new Usuario()
    			{
    				Id = Convert.ToInt32(reader["Id"]),
    				Nombre = Convert.ToInt32(reader["Nombre"])
    			};
    		}
    
    	}
    	
    	return null;
    } 
    
    

    defines una entidad que lo represente y asignas las propiedades

    Ademas usa siempre parametros, eso de concatenar los valores en un string es una pesima practica

    >>he estado pensando en mostraro en un textbox, bueno que este oculto para de ahi guardarlo

    porque harias eso, sino vas a mostrando ponlo en una variablea nivel del form o si quieres que sea mas global la defines como static

    Un control oculto, de verdad?, que ocurrencias

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    domingo, 29 de marzo de 2020 5:25
  • Hola Amuñoz

     

    ¿Alguna actualización sobre la consulta realizada? ¿Alguna de las respuestas proporcionadas te ayudó?

     

    Espero tu respuesta.

     

    Gracias por usar los foros de MSDN.

     

     

    Luis Diego Mora

     

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

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.


    martes, 31 de marzo de 2020 17:41
    Moderador