Usuário com melhor resposta
Testar resultado do banco, se está vazio

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
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
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
-