Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SqlDataAdapter.Fill() - estouro de conversão


Embora o conjunto de dados seja permitido para "preencher" um adaptador de dados, normalmente fiz com um DataTable, pois ao consultar, estou esperando apenas um conjunto de resultados. Dito isso, eu pré-consultaria a tabela, apenas para obter sua estrutura ... algo como
select whatever from yourTable(s) where 1=2

Isso obterá as colunas de resultados esperados quando você fizer um
DataTable myTable = new DataTable();
YourAdapter.Fill( myTable );

Agora que você tem uma tabela local que não falhará no tamanho do conteúdo porque nenhum registro será retornado, agora você pode ir explicitamente para essa coluna em questão e definir suas informações de tipo / tamanho de dados conforme necessário ...
myTable.Columns["NameOfProblemColumn"].WhateverDataType/Precision = Whatever you need...

AGORA, seu esquema local é legítimo e a coluna do problema terá sido identificada com sua precisão. Agora, coloque sua consulta apropriada com a cláusula where adequada e não o 1=2 para realmente retornar dados... Como não há linhas reais na primeira passagem, você nem precisa fazer um myTable.Clear() para limpar as linhas... Apenas execute novamente a consulta e dataAdapter.Fill() .

Na verdade, não tentei, pois não tenho seus problemas de dados para simular o mesmo problema, mas o processo teórico deve ajudá-lo sem ter que passar explicitamente por todas as colunas ... apenas as poucas que podem representar o problema.