none
Problema com casting no SqlDataReader RRS feed

  • Pergunta

  • Olá amigos, meu problema é o seguinte:

    Tenho um método onde faz uma consulta no meu banco de dados (SqlServer 2008) que possui uma tabela com um campo do tipo time(7), o problema é na hora que estou fazendo a leitura dos registros retornados utilizando o SqlDataReader. Quando chega neste campo eu atribuo a um atributo do tipo DateTime ai ele da problema de casting. Alguém já teve um problema parecido? E conseguiu resolver? Trecho do código:

     

     while (flexDr.Read())
            {
              TotalizadoresReducao tr = new TotalizadoresReducao();
              tr.CrNrUsuario = flexDr.GetInt16(0);
              tr.CrCrz = flexDr.GetInt32(1);
              tr.CrCoo = flexDr.GetInt32(2);
              tr.CrCro = flexDr.GetInt32(3);
              tr.CrDataMovimento = flexDr.GetDateTime(4);
              tr.CrDataEmissao = flexDr.GetDateTime(5);
              tr.CrHoraEmissao = flexDr.GetDateTime(6);
              tr.CrVendaBrutaDiaria = flexDr.GetDecimal(7);
              tr.CrDescontoISSQN = Convert.ToChar(flexDr.GetString(8));
              tr.CrId = flexDr.GetInt32(9);
              //adiciona no vetor o id da redução
              vReducoes.Add(flexDr.GetInt32(9));
              if (!flexDr.IsDBNull(10))
                tr.CrGt = flexDr.GetDecimal(10);
              tr.CrHash = flexDr.GetString(11);
              tr.CrSerieEcf = flexDr.GetString(12); 
              ListaTotalizadores.Add(tr);          
            }
            flexDr.Close();        
    
    a linha que causa o erro:

     tr.CrHoraEmissao = flexDr.GetDateTime(6);
    
    segunda-feira, 9 de maio de 2011 13:32

Respostas

Todas as Respostas

  • tenta usar getvalue() do que getstring()


    One word frees us of all the weight and pain of life: that word is love.
    segunda-feira, 9 de maio de 2011 13:35
  • Não funcionou, este método (getValue()) retorna um valor do tipo object. Mesmo eu convertendo este valor desta forma: Convert.ToDateTime(flexDr.getValue()) ele dá problema de casting.
    segunda-feira, 9 de maio de 2011 14:49
  • Não funcionou, este método (getValue()) retorna um valor do tipo object. Mesmo eu convertendo este valor desta forma: Convert.ToDateTime(flexDr.getValue()) ele dá problema de casting.


    coloca aqui o erro:

    voce tem de colocar getvalue(10).tostring()


    One word frees us of all the weight and pain of life: that word is love.
    segunda-feira, 9 de maio de 2011 14:52
  • Não funcionou, este método (getValue()) retorna um valor do tipo object. Mesmo eu convertendo este valor desta forma: Convert.ToDateTime(flexDr.getValue()) ele dá problema de casting.


    coloca aqui o erro:

    voce tem de colocar getvalue(10).tostring()


    One word frees us of all the weight and pain of life: that word is love.
    entendi, o problema é que a variável que estou atribuindo é do tipo DateTime, então não posso colocar getValue(10).ToString() isto gera erro de compilação.
    segunda-feira, 9 de maio de 2011 15:04
  • Vinícius,

    Tente utilizar a função GetTimeSpan e armazenar o resultado em um TimeSpan...


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    • Marcado como Resposta Vinícius Lins domingo, 22 de maio de 2011 20:38
    terça-feira, 10 de maio de 2011 13:11
    Moderador