Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) SqlDataReader para Label


VB6DeveloperJr

Pergunta

Pessoa, possuo em uma classe DAL, o metodo GetByUser, que me retorna um DataReader.

public SqlDataReader GetByUsuario(Int32 id)
        {
            SqlConnection oConn = new SqlConnection(ConfigurationManager.ConnectionStrings["strConn"].ConnectionString);
            
            using (SqlCommand oComm = new SqlCommand("SELECT * FROM TB_USUARIOS WHERE ID = @ID", oConn))
            {
                SqlDataReader oDr;

                try
                {
                    oConn.Open();
                    oComm.Parameters.Add("@ID", SqlDbType.BigInt).Value = id;

                    oDr = oComm.ExecuteReader();

                    return oDr;

                }
                catch (Exception)
                {
                    
                    throw;
                }
            }
        }
Esse metodo sempre me retornará um registro apenas, eu tenho um label que contém o ID do usuário e preciso pegar esse ID e mostrar o Nome, fiz dessa forma:
DAL_Usuario objDal = new DAL_Usuario();

lblUsuario.Text = objDal.GetByUsuario(Convert.ToInt32(lblUsuario.Text))["NOME"].ToString();

Mas esta aparecendo o erro: Invalid attempt to read when no data is present.

alguém poderia me ajudar??

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Pessoal, consegui resolver o problema em termos...

no metodo eu adicionei o .Read(), ficou assim

oDr = oComm.ExecuteReader();
oDr.Read();
return oDr;

Mas eu utilizo esse mesmo metodo para o DataSource de um DetailsView, e agora ele não funciona como DataSource, enfim alguma idéia?? para que essa função funcine tanto acessando Read() direto, como acessando por DataSource.

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0
Coloque o : oDr.Read();

Fora do seu método, no local que chama o método, mas para usar DataReader precisará do Read.

Abraços...

então Bruno isso foi a primeira coisa que eu tentei fazer, mas não sei como! olha só para eu atribuir o DataReader ao Label faço da seguinte forma:

Lembrando que o lbl.Usuario possui o ID do usuário que passo como parametro para a função retornar o nome!

lblUsuario.Text = objDal.GetByUsuario(Convert.ToInt32(lblUsuario.Text))["NOME"].ToString();
Agora para eu chamar o Read fora do metodo teria que ser dessa forma:
lblUsuario.Text = objDal.GetByUsuario(Convert.ToInt32(lblUsuario.Text)).Read()

A minha dúvida é como eu faço a chamada do metodo com o Read() e depois faço a leitura dos dados?

Valeuu!!

Link para o comentário
Compartilhar em outros sites

  • 0
Se o método Read não for ficar dentro de método, precisará:

IDataReader dr = objDal.GetByUsuario(Convert.ToInt32(lblUsuario.Text));
if(dr.Read())
   lblUsuario.Text = dr["SeuCampo"].ToString();

Fiz de cabeça, mas deve ficar assim.

Abraços...

Era exatamente isso que eu queria, tinha pensado em criar uma variavel auxiliar mas estava tentando criar um SqlDataReader não conhecia ainda o IDataReader!!!

Valeuu Obrigadooo!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...