sql >> Database teknologi >  >> RDS >> Sqlserver

SqlDataAdapter.Fill() - Konverteringsoverløb

Selvom datasæt er tilladt til at "udfylde" en dataadapter, har jeg typisk gjort med en datatabel i stedet for, da jeg kun forventer et resultatsæt, når jeg forespørger. Når det er sagt, ville jeg forespørge tabellen på forhånd, bare for at få dens struktur... sådan noget som

select whatever from yourTable(s) where 1=2

Dette vil få de forventede resultatkolonner, når du laver en

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

Nu hvor du har en lokal tabel, der ikke vil fejle for indholdsstørrelse, fordi ingen poster vil være blevet returneret, kan du nu eksplicit gå til den pågældende kolonne og indstille dens datatype/størrelsesoplysninger, som du har brug for...

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

NU er dit lokale skema lovligt, og problemkolonnen vil være blevet identificeret med dens præcision. Indsæt nu din rigtige forespørgsel med korrekt where-klausul og ikke 1=2 for faktisk at returnere data... Da der ikke er nogen faktiske rækker i det første gennemløb, behøver du ikke engang at lave en myTable.Clear() for at rydde rækkerne... Kør blot forespørgslen igen og dataAdapter.Fill() .

Jeg har faktisk ikke prøvet, da jeg ikke har dine dataproblemer til at simulere det samme problem, men den teoretiske proces burde klare dig uden eksplicit at skulle gennemgå alle kolonner... bare de få, der kan udgøre problemet.



  1. Den angivne nøgle var ikke til stede i ordbogen. med mysql

  2. MySQL-fejl 1118 (rækkestørrelse for stor) ved gendannelse af Django-mailer-database

  3. Best Practices for PostgreSQL-revisionslogning

  4. Findes der en utf8_unicode_cs-sortering?