Chociaż zestaw danych jest dozwolony do "wypełniania" adaptera danych, zwykle robiłem to z DataTable, ponieważ podczas wykonywania zapytań oczekuję tylko jednego zestawu wyników. Powiedziawszy to, wykonałbym wstępne zapytanie do tabeli, aby uzyskać jej strukturę... coś w stylu
select whatever from yourTable(s) where 1=2
Spowoduje to uzyskanie oczekiwanych kolumn wyników, gdy wykonasz
DataTable myTable = new DataTable();
YourAdapter.Fill( myTable );
Teraz, gdy masz lokalną tabelę, która nie zawiedzie dla rozmiaru zawartości, ponieważ nie zostaną zwrócone żadne rekordy, możesz teraz jawnie przejść do tej jednej kolumny, o której mowa i ustawić jej typ danych / informacje o rozmiarze zgodnie z potrzebami...
myTable.Columns["NameOfProblemColumn"].WhateverDataType/Precision = Whatever you need...
TERAZ Twój lokalny schemat jest legalny, a kolumna problemu zostanie zidentyfikowana z dokładnością. Teraz wprowadź właściwe zapytanie z odpowiednią klauzulą where, a nie 1=2, aby faktycznie zwrócić dane... Ponieważ w pierwszym przebiegu nie ma żadnych wierszy, nie musisz nawet wykonywać myTable.Clear()
aby wyczyścić wiersze... Po prostu ponownie uruchom zapytanie i dataAdapter.Fill()
.
Właściwie nie próbowałem, ponieważ nie mam twoich problemów z danymi, aby symulować ten sam problem, ale teoretyczny proces powinien cię pokonać bez konieczności jawnego przechodzenia przez wszystkie kolumny ... tylko kilka, które mogą stanowić problem.