Recupero e visualizzazione di dati Blob
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();