none
Problema al comparar strings con un método en C# - Windows Forms RRS feed

  • Pregunta

  • Hola tengo un problema al intentar comparar 2 strings. Mi idea es comparar sus valores. Son para un usuario y contraseña de un login que estoy programando.

    No, no busco comparar los 2 string entre ellos, es con un método que declaré previamente. Esto llevo de momento.

    if(this.txt_usuario.text || this.txt_pass.text != ValidaUsuarios(txt_usuario.text, txt_pass.text)){ //MENSAJE DE BIENVENIDA }else{ /*MENSAJE DE ERROR PORQUE EL USUARIO NO INGRESO SU NICK O CONTRASEÑA CORRECTOS los cuales

    deben ser EXACTAMENTE lo mismo que en la base de datos*/

    }


    Lo hice de esa manera buscando la forma de responder a lo siguiente.

    Si el textbox usuario o el textbox pasword son diferentes que el método ValidaUsuarios hacer

    El método ValidaUsuarios viene de un procedimiento almacenado el cual es el siguiente:

    USE [STORE]
    
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER PROCEDURE [store].[SP_VALIDA_USUARIOS]
    @nick varchar(20),
    @pass varchar(30)
    AS
    SELECT COUNT(*) FROM store.Usuarios 
    WHERE @nick LIKE NICK AND @pass LIKE Contraseña

    Yo sé que tengo algo malo allí y es en la condición if me arroja 2 errores: 1ero. Dice que el operador != no se puede aplicar a operandos de tipo bool y string; y 2do que el operador || no se puede aplicar a operandos del tipo string y bool; como dije lo hice de esa manera pensando en una forma de validar si los datos ingresados por el usuario son iguales a los que están en la base de datos. Pero resultó en errores.





    • Editado M4uriXD martes, 28 de enero de 2020 19:12
    martes, 28 de enero de 2020 19:02

Respuestas

  • hola

    Porque usas el LIKE en el SELECT, si estas validando la autenticacion no se busca por aproximacion se buscas una exactitud

    SELECT COUNT(*) FROM store.Usuarios 
    WHERE NICK = @nick AND Contraseña = @pass

    entonces si tendras un cero o un uno si es que existe coincidencia o no

    Si hay un 1 entonces existe y dejas pasar al usuario

    Solo usas

    if(ValidaUsuarios(txt_usuario.text, txt_pass.text)){ //MENSAJE DE BIENVENIDA }else{ //MENSAJE DE ERROR

    }

    Entonces el metodo ValidaUsuarios() debe retornar un bool

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta M4uriXD miércoles, 29 de enero de 2020 19:15
    martes, 28 de enero de 2020 19:50