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.