none
ExecuteReader não funciona RRS feed

  • Pergunta

  • Pessoal,

    Estou precisando de uma ajuda no código abaixo. Estou usando entlib, e o executeReader parece não estar funcionando, o datareader sempre permanece nulo. O que pode estar ocorrendo?  Se eu usar um executescalar funciona.
    Obrigado.


    Database db = DatabaseFactory.CreateDatabase("XXXXXX");
    string sqlCommand = String.Concat("select nome,cpf from tabela where chave = ", pr.Registro);
    DbCommand comando = db.GetSqlStringCommand(sqlCommand);
               
    IDataReader dr = null;
    try
      {
         dr = db.ExecuteReader(comando);
         pr.Nome = Convert.ToString(dr["nome"]);
         pr.Cpf = Convert.ToInt32(dr["cpf"]);
      }
    catch
      {  }
    return (pr);
    quinta-feira, 15 de outubro de 2009 18:53

Todas as Respostas

  • Olá,

    Faltou ler seu datareader.

    http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.read.aspx

    Normalmente usado com um while:

    dr = db.ExecuteReader(comando);
    while(dr.Read())
    {
         pr.Nome = Convert.ToString(dr["nome"]);
         pr.Cpf = Convert.ToInt32(dr["cpf"]);
    }

    Roberto Santos http://blog.robertoosantos.com
    • Sugerido como Resposta Ari C. Raimundo sábado, 17 de outubro de 2009 03:44
    quinta-feira, 15 de outubro de 2009 19:22
  • Utilize dr.Read() após o ExecuteReader para posicionar o DataReader na primeira linha.

    Espero ter ajudado. Caso consiga solucionar o problema em função desta resposta, peço por favor, clicar em “Marcar como Resposta” para que outras pessoas também possam usufruir deste conteúdo.

    Abraço.
    Daniel Garcia
    MCP, MCTS, MCDP, MCT
    Meu blog: www.danielgarcia.com.br

    • Sugerido como Resposta Ari C. Raimundo sábado, 17 de outubro de 2009 03:44
    quinta-feira, 15 de outubro de 2009 20:12
  • Olá, obrigado pelas respostas.
    Realmente, estava faltando mesmo ler o datareader. Já tinha colocado pra ler, mas nas mexidas, acabei modificado, tirei e esqueci de colocar. Só que o problema não era só esse. É que o cpf tá o BD como bigint, e tive que mudar para int64 na classe. Agora funcionou.
    Valeu pelas respostas.

    sexta-feira, 16 de outubro de 2009 12:09