Erro no SELECT dto

10/03/2015

0

public UsuarioDTO Find2(string Login, string Senha)
{
try
{ AbrirConexao();
Cmd = new SqlCommand("select * from Usuario where Login = @p1 and Senha = @p2", Con);
Cmd.Parameters.AddWithValue("@p1", Login);
Cmd.Parameters.AddWithValue("@p2", Senha);
Dr = Cmd.ExecuteReader();


UsuarioDTO dto = null;
if (Dr.Read())
{
Usuario usu = new Usuario();


if (usu != null)
{

dto = new UsuarioDTO();
dto.Nome = usu.Nome;
dto.Login = usu.Login;
dto.Perfil = usu.Perfil.IdPerfil;
}
else { }

}
return dto;
}
catch
{
throw;
}
finally { FecharConexao(); }
}

Toda vez que eu executo esse trecho quando chega na parte que o dto que precisa pegar os valores de usu da erro e nao consigo atribuir os valores.
Alguem sabe onde estou errando?
Davi Maciel

Davi Maciel

Responder

Posts

11/03/2015

Soeuseijothaz

Sempre que você postar um trecho de código use as TAG`S </> para formatá-lo, fica muito mais fácil a leitura e a ajuda.

       public UsuarioDTO Find2(string Login, string Senha)
        {
            try
            {
                AbrirConexao();
                Cmd = new SqlCommand("select * from Usuario where Login = @p1 and Senha = @p2", Con);
                Cmd.Parameters.AddWithValue("@p1", Login);
                Cmd.Parameters.AddWithValue("@p2", Senha);
                Dr = Cmd.ExecuteReader();


                UsuarioDTO dto = null;
                if (Dr.Read())
                {
                    Usuario usu = new Usuario();


                    if (usu != null)
                    {

                        dto = new UsuarioDTO();
                        dto.Nome = usu.Nome;
                        dto.Login = usu.Login;
                        dto.Perfil = usu.Perfil.IdPerfil;
                    }
                    else { }

                }
                return dto;
            }
            catch
            {
                throw;
            }
            finally { FecharConexao(); }
        }


Qual erro retorna?

Tenta debugar, dê um F9 na linha Dr = Cmd.ExecuteReader(); marque um breakpoint e veja qual o conteúdo retornado.
Responder

16/03/2015

Davi Maciel


try
            {
                AbrirConexao();
                Cmd = new SqlCommand("SELECT * FROM Usuario WHERE Login = @p1 AND Senha = @p2", Con);
                Cmd.Parameters.AddWithValue("@p1", Login);
                Cmd.Parameters.AddWithValue("@p2", Senha);
                Dr = Cmd.ExecuteReader();


                UsuarioDTO dto = null;
                if (Dr.Read())
                {
                    Usuario usu = new Usuario();



                    if (usu != null)
                    {
                        

                        dto = new UsuarioDTO();
                        dto.Login = Convert.ToString(Dr["Login"]);
                        dto.Nome = Convert.ToString(Dr["Nome"]);
                        dto.Perfil = Convert.ToInt32(Dr["IdPerfil"]);
                    }
                    

                }
                return dto;
            }


Consegui resolver da seguinte maneira adicionando o conteúdo do DataReader na minha dto(Data Transfer Object ).
Ai funcionou... valeu a atenção.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar