Usuário com melhor resposta
Problema com casting no SqlDataReader

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:
a linha que causa o erro: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();
tr.CrHoraEmissao = flexDr.GetDateTime(6);
Respostas
-
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
Todas as Respostas
-
-
-
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. -
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. -
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