sql >> Base de Datos >  >> RDS >> Sqlserver

SqlDataAdapter.Fill() - Desbordamiento de conversión

Aunque el conjunto de datos está permitido para "llenar" un adaptador de datos, normalmente lo he hecho con un DataTable en lugar de consultar, solo espero un conjunto de resultados. Habiendo dicho eso, pre-consultaría la tabla, solo para obtener su estructura... algo como

select whatever from yourTable(s) where 1=2

Esto obtendrá las columnas de resultados esperados cuando haga un

DataTable myTable = new DataTable();
YourAdapter.Fill( myTable );

Ahora que tiene una tabla local que no fallará en cuanto al tamaño del contenido porque no se habrán devuelto registros, ahora puede ir explícitamente a esa columna en cuestión y establecer su información de tipo/tamaño de datos según lo necesite...

myTable.Columns["NameOfProblemColumn"].WhateverDataType/Precision = Whatever you need...

AHORA, su esquema local es legítimo y la columna del problema se habrá identificado con su precisión. Ahora, ingrese su consulta adecuada con la cláusula where adecuada y no el 1 =2 para devolver datos realmente ... Dado que no hay filas reales en el primer paso, ni siquiera necesita hacer un myTable.Clear() para borrar las filas... Simplemente vuelva a ejecutar la consulta y dataAdapter.Fill() .

En realidad, no lo he intentado porque no tengo sus problemas de datos para simular el mismo problema, pero el proceso teórico debería ayudarlo sin tener que revisar explícitamente todas las columnas ... solo las pocas que pueden plantear el problema.