Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ronaldo Faria Storck Eler

Não há resposta do banco

Recommended Posts

Olá pessoal, sou novo em c#, mas precisei fazer um webservice aqui e estou "dando cabeçada", consegui chegar na função de autenticação:

public Credential getAuthentication(String username, String password)
        {
            MySqlConnection connection = connector.getConnection(_db, _user, _pass);
            DataSet dataset = new DataSet();
            Credential credential = new Credential();
            try
            {
                connection.Open();
            }
            catch (System.Exception e)
            {

            }
            if (connection.State == ConnectionState.Open)
            {
                
                String SenhaMD5 = tokenizer.getTokenSenha(password);
             
                
                string sqlQuery = "SELECT `UsuarioID`, `UsuarioAuthToken` " +
                                  " FROM `" + _tabelaUsuarios + "` " +
                                   " WHERE `UsuarioLogin` = '" + username + "' AND `UsuarioSenha` = '" + SenhaMD5 + "' " +
                                   " LIMIT 1";
                MySqlDataAdapter adapter = new MySqlDataAdapter(sqlQuery, connection);
                adapter.Fill(dataset, "Tokens");
                DataTableReader reader = dataset.CreateDataReader();
                //reader.Read();
                // Unsuccesfull login attempt
                if (!reader.HasRows)
                {
                    credential.hash = "0";
                    credential.user = "";
                    credential.error = "Nome de Usuario e/ou senha incorretos! (" + sqlQuery + " --> MD5: " + SenhaMD5 + ")";
                }
                // Succesfull login attempt
                else
                {
                    reader.Read();
                    String token = reader.GetValue(1).ToString();
                    // if a token hasn't been set to this user yet
                    if (token == "")
                    {
                        // create new token and update the database
                        token = tokenizer.getToken();

                        string insertTokenQuery = "UPDATE  " + _tabelaUsuarios + " " +
                                                  " SET UsuarioAuthToken =  '" + token + "' " + 
                                                  " WHERE UsuarioLogin = '" + username + "' AND UsuarioSenha = '" + password + "' " +
                                                  " LIMIT 1";
                        MySqlCommand insertTokenCommand = new MySqlCommand(insertTokenQuery, connection);
                        int linesAffected = insertTokenCommand.ExecuteNonQuery();
                        if (linesAffected == 0)
                        {
                            credential.hash = "0";
                            credential.user = "";
                            credential.error = "Não foi possível acessar o banco de dados! Tente novamente.";
                            return credential;
                        }
                    }
                    credential.hash = token;
                    credential.user = reader.GetValue(0).ToString();
                    credential.error = "";
                }
            }
            connection.Close();
            return credential;
        }

O problema é que, mesmo existindo o usuário na base de dados (copiei a sql gerada e rodei no banco), ele sempre cai no erro

if (!reader.HasRows)

Imagino que eu deva estar deixando passar algo simples... agradeço imensamente a ajuda.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual erro ele gera ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, ele cai sempre if (!reader.HasRows), ou seja, nunca encontra os registros, mesmo eles existindo... aparentemente não há erro, apenas não encontra o registro... mas ele existe... ele retorna os parâmetros do erro, descrito hein

credential.error = "Nome de Usuario e/ou senha incorretos! (" + sqlQuery + " --> MD5: " + SenhaMD5 + ")";

Eu acho que é alguma coisa antes do if (!reader.HasRows), algo que eu esteja esquecendo, ou o adapter não está buscando os dados, etc...

Compartilhar este post


Link para o post
Compartilhar em outros sites

//reader.Read();

 

Isso ainda está comentado?

 

Você não precisa de um dataTableReader, a própria dataTable já é um array, basta você fazer a verificação simples

 

If (dataReader.length >0)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.