none
Testar resultado do banco, se está vazio RRS feed

  • Pergunta

  • Estou fazendo um sistema de login com HWID, estou com algumas dificuldades.

    Preciso testar se o HWID já existe no banco, senão existe, settar. Porém não consigo testar se está vazio.

    o HasRows identifica o " " do banco, então identifica que já existe e pula para próxima validação.

    Alguém pode ajudar?

     private Boolean verificarHWID(){

                string retorno = "";
                string usuario = this.txtUsuario.Text;
                string query = "SELECT hwid FROM usuario where usuario =@usuario";
                string MySQLConnectionString = "...............";
                MySqlConnection conn = new MySqlConnection(MySQLConnectionString);
                MySqlCommand cmd = new MySqlCommand(query, conn);
                cmd.Parameters.AddWithValue("@usuario", usuario);
                conn.Open();
                MySqlDataReader leitor = cmd.ExecuteReader();


                if (leitor.HasRows)
                {
                    //testa se hwid existe no banco
                    leitor.Read();
                    //string retorno recebe o hwid do usuário
                    retorno = leitor["hwid"].ToString();
                    
                    if (retorno == getHWID().ToString())
                    {
                        //hwid igual ao do banco = continua
                        conn.Close();
                        return true;
                    }
                    else
                    {
                        //caso hwid diferente do banco = para
                        conn.Close();
                        return false;
                    }
                }
                else
                {
                    //setta hwid senão estiver settado = continua
                    cmd.Parameters.AddWithValue("@hwid", getHWID().ToString());
                    query = "UPDATE Usuario SET hwid=@hwid where usuario=@usuario";
                    cmd = new MySqlCommand(query, conn);
                    conn.Close();
                    return true;

                }

            }


    • Editado André BadH domingo, 15 de abril de 2018 21:29
    domingo, 15 de abril de 2018 21:27

Respostas

  • Que tipo de campo você está usando no banco?

    O HasRows está funcionando como esperado: você deu select de um usuário, fez a query e retornou que tem 1 usuário com o nome que você mandou.

    Em algum momento você salvou um espaço em branco na coluna hwid do usuário.

    Agora você poderia mudar um pouco seu código:

    if (leitor.HasRows)
    {
    	leitor.Read();
    	
    	var hwid = leitor["hwid"]?.ToString();
    	
    	if(string.IsNullOrWhiteSpace(hwid))
    	{
    		//update no campo hwid do usuario
    		if(atualizou) return true;
    	}
    	else
    	{
    		//já tem hwid
    		return true;
    	}	
    	
    	//não tem hwid e não conseguiu dar o update
    	return false;
    }

    Eu faria um método só para update de hwid e outro só para verificar também.



    • Marcado como Resposta André BadH segunda-feira, 16 de abril de 2018 01:05
    domingo, 15 de abril de 2018 23:28

Todas as Respostas

  • Que tipo de campo você está usando no banco?

    O HasRows está funcionando como esperado: você deu select de um usuário, fez a query e retornou que tem 1 usuário com o nome que você mandou.

    Em algum momento você salvou um espaço em branco na coluna hwid do usuário.

    Agora você poderia mudar um pouco seu código:

    if (leitor.HasRows)
    {
    	leitor.Read();
    	
    	var hwid = leitor["hwid"]?.ToString();
    	
    	if(string.IsNullOrWhiteSpace(hwid))
    	{
    		//update no campo hwid do usuario
    		if(atualizou) return true;
    	}
    	else
    	{
    		//já tem hwid
    		return true;
    	}	
    	
    	//não tem hwid e não conseguiu dar o update
    	return false;
    }

    Eu faria um método só para update de hwid e outro só para verificar também.



    • Marcado como Resposta André BadH segunda-feira, 16 de abril de 2018 01:05
    domingo, 15 de abril de 2018 23:28
  • Estou usando o HWID como VARCHAR

    Essa maneira ficou funcional, muito obrigado.

    Problema resolvido! =)

    segunda-feira, 16 de abril de 2018 01:05