Recupero e visualizzazione di dati Blob

untitled-1282929-mDopo aver inserito un record contenente un file si crea il bisogno di ricercarlo e visualizzarlo, a tale scopo esistono diversi modi per recuperare dei file precedentemente salvati in un database. Nell’esempio in questo articolo si utilizza una semplice procedura che effettua una richiesta al server SQL, si processa la risposta e si visualizzano i dati forniti a video.

MySqlConnection connection = new MySqlConnection(@"server=192.168.1.111;database=MyDB;uid=username;pwd=password");
MySqlCommand command =
new MySqlCommand("SELECT DESCRIPTION,SFILE,EXT,CURRENT_VERSION FROM STORED_FILES WHERE DESCRIPTION='test.bmp'",
connection);

A questo punto vengono definite le variabili per la creazione e la scrittura del file.

//Stream
FileStream fs;
BinaryWriter bw;
//buffer
int bufferSize = 100;
byte[] outbyte = new byte[bufferSize];
long retval;
long startIndex = 0;
//nome del file e destinazione
string FileName = "";
string path = "C:\\out\\"   

Apro la connessione al database ed eseguo il comando tramite il DataReader

connection.Open();

MySqlDataReader myReader =
command.ExecuteReader(CommandBehavior.SequentialAccess);

Aperta una connessione con il database ed eseguito il reader del comando SELECT vengono processati i risultati della query e gli stream salvati in un file, nella posizione definita da path+FileName.

while (myReader.Read())
{
// Ricavo il nome del file
FileName = myReader.GetString(0);

//Creazione del file per il salvataggio dei dati in output
fs = new FileStream( path+FileName , FileMode.OpenOrCreate, FileAccess.Write);
bw = new BinaryWriter(fs);

startIndex = 0;

//Lettura dello stream di dati
retval = myReader.GetBytes(1, startIndex, outbyte, 0, bufferSize);

//Lettura e scrittura dei dati buffer
while (retval == bufferSize)
{
bw.Write(outbyte);
bw.Flush();

startIndex += bufferSize;
retval = myReader.GetBytes(1, startIndex, outbyte, 0, bufferSize);
}

//Scrittura dei dati nel file
bw.Write(outbyte, 0, (int)retval - 1);
bw.Flush();
//Chiusura del file output
bw.Close();
fs.Close();
}

Al termine chiusura del db reader e della connessione al database

myReader.Close();
connection.Close();

Esempio dati Blob MySQL in C#

Ti potrebbe interessare anche...