Bien que l'ensemble de données soit autorisé pour "remplir" un adaptateur de données, j'ai généralement utilisé un DataTable à la place, car lors de l'interrogation, je n'attends qu'un seul ensemble de résultats. Cela dit, je pré-interrogerais la table, juste pour obtenir sa structure... quelque chose comme
select whatever from yourTable(s) where 1=2
Cela obtiendra les colonnes de résultats attendus lorsque vous ferez un
DataTable myTable = new DataTable();
YourAdapter.Fill( myTable );
Maintenant que vous avez une table locale qui n'échouera pas pour la taille du contenu car aucun enregistrement n'aura été renvoyé, vous pouvez maintenant accéder explicitement à cette colonne en question et définir ses informations de type/taille de données selon vos besoins...
myTable.Columns["NameOfProblemColumn"].WhateverDataType/Precision = Whatever you need...
MAINTENANT, votre schéma local est légitime et la colonne problématique aura été identifiée avec sa précision. Maintenant, insérez votre requête appropriée avec la clause where appropriée et non le 1 =2 pour renvoyer réellement les données ... Puisqu'aucune ligne réelle lors de la première passe, vous n'avez même pas besoin de faire un myTable.Clear()
pour effacer les lignes... Il suffit de relancer la requête et dataAdapter.Fill()
.
Je n'ai pas vraiment essayé car je n'ai pas vos problèmes de données pour simuler le même problème, mais le processus théorique devrait vous permettre de vous débrouiller sans avoir à parcourir explicitement toutes les colonnes... juste les quelques-unes qui peuvent poser le problème.