nakid.mkt 0 Denunciar post Postado Setembro 17, 2012 Oi pessoal, Estou com um problema aqui e ninguém da empresa conseguiu resolver. Tenho vários projetos asp.net em um servidor e, de tempos em tempos, uma de qualquer uma dessas aplicações sofre com este mesmo problema descrito a seguir: A aplicação conecta no banco, roda a procedure para retornar dados, joga o resultado para um "Data Table" e, quando o código chega na etapa de eu pegar o valor de uma coluna em uma variável, como: if (MeuDataTable.Rows.Count > 0) { foreach (DataRow i in MeuDataTable.Rows) { //essa linha dá pau!!!!! string nome = i["NOME"].ToString(); } } eu recebo erro na tela que minha DataTable "does not contain a property with the name 'NOME'". O curioso é que a ele passa pelos testes "Rows.Count > 0" e entra no "foreach". Isso me diz que a conexão com o banco foi feita e que os valores são retornados. Todas as minhas conexões com o banco de dados são feitas com Try, cath e fechadas no finally, por isso não pode ser estouro de conexões. Se o pool da app é restartado, tudo volta a funcionar normalmente até o erro voltar a ocorrer. Não sei mais o que testar. Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Setembro 17, 2012 Qual a razão de usar DataTable? O erro é estranho, mas se for só leitura, neste caso eu trocaria para DataReader. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Setembro 17, 2012 Creio que não, acredito que o erro no i seja de parâmetros, você verificou se há mesmo um campo com o nome "NOME"? Poste aqui a arquitetura desta tabela, assim fica mais fácil de ajudar. Compartilhar este post Link para o post Compartilhar em outros sites
Dagmar Cirino 0 Denunciar post Postado Setembro 17, 2012 Oi pessoal, Estou com um problema aqui e ninguém da empresa conseguiu resolver. Tenho vários projetos asp.net em um servidor e, de tempos em tempos, uma de qualquer uma dessas aplicações sofre com este mesmo problema descrito a seguir: A aplicação conecta no banco, roda a procedure para retornar dados, joga o resultado para um "Data Table" e, quando o código chega na etapa de eu pegar o valor de uma coluna em uma variável, como: if (MeuDataTable.Rows.Count > 0) { foreach (DataRow i in MeuDataTable.Rows) { //essa linha dá pau!!!!! string nome = i["NOME"].ToString(); } } eu recebo erro na tela que minha DataTable "does not contain a property with the name 'NOME'". O curioso é que a ele passa pelos testes "Rows.Count > 0" e entra no "foreach". Isso me diz que a conexão com o banco foi feita e que os valores são retornados. Todas as minhas conexões com o banco de dados são feitas com Try, cath e fechadas no finally, por isso não pode ser estouro de conexões. Se o pool da app é restartado, tudo volta a funcionar normalmente até o erro voltar a ocorrer. Não sei mais o que testar. Cara, eu estava com um problema aqui como o seu. Fiz um teste "sem noção" aqui, e, deu certo. Mudei apenas o tipo da atribuição: //essa linha dá pau!!!!! //string nome = i["NOME"].ToString(); string nome = i["NOME"].Text; Não sei se funcionaria na sua aplicação, pois comigo foi em WinForm. Mas vale a tentativa. Compartilhar este post Link para o post Compartilhar em outros sites
nakid.mkt 0 Denunciar post Postado Setembro 17, 2012 Obrigado pelas respostas. Por partes: quintelab, eu comecei usando o DataReader, mas fui aconselhado pelos mais experientes na linguagem a usar o DataTable. KhaosDoctor, NOME eu dei como exemplo. Esse erro acontece em diversas partes de diversas aplicações, e sempre o campo existe na tabela, tanto que quando o pool restarta a aplicação volta a funcionar novamente. Dagmar Cirino, o erro não acontece apenas com strings, mas sim com ints ou qualquer outro tipo. Agradeço as colaborações. Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Setembro 18, 2012 Use indexes ao invés de nomes, veja se dá certo. Se mesmo assim não funcionar, tente substituir a DT pelo DataSet. Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Setembro 19, 2012 Não tem lógica nenhuma usar datatable somente para leitura de dados. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites