Salvare un Blob MySQL in C#
Tags:
Il post seguente fa parte del progetto SQLStringBuilder. Per le ultime versioni del codice sorgente si consiglia di prelevare il codice dal CVS.
Oggi mi si è posto davanti il problema di salvare un campo blob in un database MySQL utilizzando c# come linguaggio. La soluzione è stata abbastanza semplice, ma può risultare ostico trovarla per chi non è avezzo con il C#.
Il Blob è un campo binario dove vengono salvati dati, e per passare questi dati binari all’interno di una stringa SQL testuale dobbiamo convertire i dati binari in una rappresentazione esadecimale e poi inserirli nella SQL.

Il risultato sarà qualcosa del genere:
INSERT INTO tableWithBlob VALUES(1,0xab425fa52d3e13);
Dove 0x…. sono i nostri dati binari.
Innanzitutto dobbiamo convertire la struttura dati da salvare nel database in un array di byte (byte[]), o comunque dobbiamo poter accedere a tutti i byte della struttura.
A questo punto per creare il campo blob da inserire nella stringa SQL eseguiamo il seguente snippet di codice:
byte [] blob = // i dati binari da salvare nel DB
// creo uno StringBuilder con lo spazio necessario per allocare il blob
// più i primi due caratteri (0x)
StringBuilder blobBuilder = new StringBuilder(blob.Length + 2);
blobBuilder.Append(”0x”);
// converto ogni byte in una stringa esadecimale e la appendo all’oggetto StringBuilder
for (int i = 0; i < blob.Length; i++)
blobBuilder.Append(String.Format(”{0:x2}”, blob[i]));
string blobString = retBlob.ToString();
Semplice, no?
Se sei interessato a questo post, potresti anche provare a leggere:
-
No related posts
20 Feb 2007 dzamir
Bell’articolo Dzamir! In effetti mi ero sempre chiesto qual’era la procedura per salvare i blob….adesso è chiarissimo!