Array
(
)

Erro no SELECT dto

Davi Maciel
   - 10 mar 2015

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?

Jothaz
   - 11 mar 2015

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.

#Código

       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.

Davi Maciel
   - 16 mar 2015

#Código


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.