MySQLDriverCS e System.Byte[]

Oggi ho scoperto che usando questi driver per la connessione ad un database MySQL all’interno di una pagina .aspx, nel caso di una SELECT su campo di tipo Text , TintText , MediumText o LongText invece di restituire una stringa restituiscono un insieme di byte.

Se si utilizza un DataReader è possibile convertire in stringa utilizzando il metodo GetString ( credo messo a disposizione proprio per questo) , che però accetta come argomento solo l’indice del campo.
Nel caso volessimo utilizzare il nome del campo possiamo ricorrere ad un altro metodo GetOrdinal, che ci restituisce un integer con l’indice della posizione del campo. ( fonte )

DataReader.GetString(DataReader.GetOrdinal(“NomeCampo”))

Inizialmente l’ho interpretato come un errore del driver ma in realtà ho imparato che MySQL internamente tratta questi campi come array di byte, e quindi, anche se non condivido la scelta dello sviluppatore, si è scelto di restituire lo stesso tipo.

I problemi si complicano se voglio lavorare con un DataTable preparato da un DataAdapter, infatti, anche se internamente viene usato un DataReader, le righe non vengono generate correttamente.

Dopo diverse ricerche, numerosi tentativi falliti e dopo qualche capocciata, ho deciso di aggirare il problema cambiando semplicemente i driver usati per la connessione e passando quindi all’utilizzo dei Connector/Net sviluppati direttamente da MySQL AB.

Fortunatamente le modifiche sono state minime essendo i nomi dei metodi praticamente identici.
In pratica ho sostituito le chiamate a MySQLDriverCS trasformandole in MySql.Data.MySqlClient ed ho cambiato il formato della stringa per la connessione.

Maurizio Pelizzone

Maurizio Pelizzone

Sono Maurizio Pelizzone, sviluppatore WordPress da oltre vent'anni e consulente di intelligenza artificiale a Torino, co-fondatore di Mavida. Realizzo plugin e integrazioni su misura per WordPress e WooCommerce, automazioni dei processi con n8n e agenti AI, e tengo corsi e workshop su Claude Code, prompt engineering e vibe coding, in presenza a Torino o da remoto. Sono speaker ai WordCamp e autore della guida gratuita in italiano a Claude Code; se vuoi parlarmi di un progetto puoi prenotare una call conoscitiva.

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *