PDA

View Full Version : [C#] MySql .NET Connector - Problema metodo Fill()


tomino87
07-11-2010, 13:38
Ciao a tutti,
ho il seguente problema e non riesco a capirne la causa:

se creo una DataTable in un DataSet, creando la sua struttura (le colonne) prima di riempirla col metodo Fill() del MySqlDataAdapter, quando eseguo il metodo Fill() i campi che ho dichiarato io mi vengono riempiti correttamente coi dati, ma le colonne mi vengono duplicate.

Ovvero, se ho una tabella TBL coi campi T1 e T2, dopo il metodo Fill() i campi saranno T1, T2, NuovoCampoT1, NuovoCampoT2.

Mi sono detto che probabilmente il problema deriva dal fatto che il metodo Fill() vuole creare da sè la struttura della DataTable e quindi se creo manualmente le colonne, questo interferisce con l' esecuzione di Fill(), ma non ne sono sicuro.

Qualcuno me lo può confermare, o altrimenti mi sa dire se conosce un possibile motivo per cui una cosa del genere possa accadere?

Grazie,
Piero

Kralizek
07-11-2010, 14:04
non creare la struttura (nel caso aggiungi le colonne che ti servono dopo il Fill()). Oppure puoi usare i DataTableMapping.

http://msdn.microsoft.com/en-us/library/ks92fwwh%28VS.71%29.aspx

tomino87
07-11-2010, 14:16
non creare la struttura (nel caso aggiungi le colonne che ti servono dopo il Fill()). Oppure puoi usare i DataTableMapping.

http://msdn.microsoft.com/en-us/library/ks92fwwh%28VS.71%29.aspx

Ti ringrazio della risposta... proverò a leggere il link che mi hai dato.
Il motivo per cui creavo la struttura era perchè quando la tabella ha dei campi blob (e forse anche alcuni altri DataTypes), su esecuzione di Fill() si verificava l' eccezione "Unconvertible type mismatch...", in quanto il dataAdapter tentava di mappare il campo come string anzichè utilizzare il tipo di dato corretto.

Speriamo che il tuo suggerimento sui tableMappings risolva il mio problema :)

tomino87
07-11-2010, 14:23
Ho letto il link....
come temevo, non risolve il mio problema, in quanto i TableMappings permettono di mappare soltanto nomi di tabelle/colonne, ma non è quello il mio problema... :(

Capovolgo il punto di vista e ti faccio direttamente una domanda: sai forse se esiste qualcosa di analogo ai TableMappings per i dataTypes delle colonne?

Kralizek
07-11-2010, 14:43
ma la generazione automatica non va bene?

tomino87
07-11-2010, 17:37
La generazione automatica come dicevo mi dà dei problemi coi dataTypes Binary e DateTime (per quello che ho visto finora...).

Ad ogni modo, ho (ri)provato ad utilizzare il metodo FillSchema() del DataAdapter e sembra funzionare: genera lo schema correttamente, anche coi dataTypes che prima mi davano problemi. Strano, perchè avevo già provato prima, ma non funzionava...