sql >> Database >  >> RDS >> Sqlserver

SqlDataAdapter.Fill() - Conversie-overloop

Hoewel een dataset is toegestaan ​​voor het "vullen" van een gegevensadapter, heb ik het meestal met een DataTable gedaan, omdat ik bij het opvragen slechts één resultaatset verwacht. Dat gezegd hebbende, zou ik de tabel vooraf opvragen, gewoon om de structuur ervan te krijgen... zoiets als

select whatever from yourTable(s) where 1=2

Dit krijgt de verwachte resultaatkolommen wanneer u een

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

Nu je een lokale tabel hebt die niet faalt voor de inhoudsgrootte omdat er geen records zijn geretourneerd, kun je nu expliciet naar die ene kolom in kwestie gaan en de gegevenstype / grootte-informatie instellen zoals je nodig hebt...

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

NU is uw lokale schema legitiem en is de probleemkolom met zijn precisie geïdentificeerd. Voer nu uw juiste query in met de juiste where-clausule en niet de 1=2 om daadwerkelijk gegevens te retourneren ... Aangezien er geen echte rijen in de eerste doorgang zijn, hoeft u niet eens een myTable.Clear() om de rijen te wissen... Voer de query opnieuw uit en dataAdapter.Fill() .

Ik heb het niet echt geprobeerd, omdat ik je gegevensproblemen niet heb om hetzelfde probleem te simuleren, maar het theoretische proces zou je moeten helpen zonder expliciet alle kolommen te hoeven doorlopen ... alleen de weinige die het probleem kunnen vormen.



  1. Uitvoeringsproces van Postgresql-functies

  2. Hoe stel ik Collation in MySQL-database in met Django 2.* mysqlclient?

  3. Hoe zorg ik ervoor dat MySQL een INDEX gebruikt voor weergavequery's?

  4. Geautomatiseerd testen van PostgreSQL-back-ups