Även om dataset är tillåtet för att "fylla" en dataadapter, har jag vanligtvis gjort med en DataTable istället som när jag frågar, jag förväntar mig bara en resultatuppsättning. Med det sagt skulle jag förfråga tabellen, bara för att få strukturen... något i stil med
select whatever from yourTable(s) where 1=2
Detta kommer att få de förväntade resultatkolumnerna när du gör en
DataTable myTable = new DataTable();
YourAdapter.Fill( myTable );
Nu när du har en lokal tabell som inte kommer att misslyckas för innehållsstorlek eftersom inga poster kommer att ha returnerats, kan du nu explicit gå till den aktuella kolumnen och ställa in dess datatyp/storleksinformation som du behöver...
myTable.Columns["NameOfProblemColumn"].WhateverDataType/Precision = Whatever you need...
NU är ditt lokala schema legitimt och problemkolumnen kommer att ha identifierats med dess precision. Lägg nu in din rätta fråga med korrekt where-sats och inte 1=2 för att faktiskt returnera data... Eftersom inga faktiska rader i det första passet, behöver du inte ens göra en myTable.Clear()
för att rensa raderna... Kör bara frågan igen och dataAdapter.Fill()
.
Jag har faktiskt inte försökt eftersom jag inte har dina dataproblem att simulera samma problem, men den teoretiska processen bör hjälpa dig utan att explicit behöva gå igenom alla kolumner... bara de få som kan utgöra problemet.