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

SqlDataAdapter.Fill() - Overflow di conversione

Sebbene il set di dati sia consentito per "riempire" un adattatore dati, in genere ho utilizzato un DataTable come durante l'esecuzione di query, mi aspetto solo un set di risultati. Detto questo, pre-interrogherei il tavolo, solo per ottenere la sua struttura... qualcosa come

select whatever from yourTable(s) where 1=2

Questo otterrà le colonne dei risultati attesi quando esegui un

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

Ora che hai una tabella locale che non fallirà per la dimensione del contenuto perché non saranno stati restituiti record, ora puoi andare esplicitamente a quella colonna in questione e impostare il tipo di dati / le informazioni sulla dimensione di cui hai bisogno...

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

ORA, il tuo schema locale è legittimo e la colonna del problema sarà stata identificata con la sua precisione. Ora, inserisci la tua query corretta con la clausola where corretta e non 1=2 per restituire effettivamente i dati ... Poiché nessuna riga effettiva nel primo passaggio, non è nemmeno necessario eseguire un myTable.Clear() per cancellare le righe... Esegui nuovamente la query e dataAdapter.Fill() .

In realtà non ho provato perché non ho problemi con i tuoi dati a simulare lo stesso problema, ma il processo teorico dovrebbe farti passare senza dover esaminare esplicitamente tutte le colonne... solo le poche che potrebbero porre il problema.