Inserimento di dati Blob in MySQL e SQL Server
Per prima cosa si va a creare il database:
CREATE DATABASE TestDB
Nel caso in cui si utilizzi Mysql useremo il comando:
CREATE TABLE `TestDB`.`STORED_FILES` ( `ID` INT NOT NULL AUTO_INCREMENT, `DESCRIPTION` VARCHAR(255) NULL, `SFILE` BLOB NULL, `VERSION` CHAR(10) NULL, `EXT` VARCHAR(50) NULL, PRIMARY KEY (`ID`));
se invece il nostro database è SQL Server utilizzeremo:
CREATE TABLE STORED_FILES ( ID int NOT NULL IDENTITY (1, 1), DESCRIPTION varchar(255) NULL, SFILE image NULL, VERSION char(10) NULL, EXT varchar(50) NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO ALTER TABLE dbo.STORED_FILES ADD CONSTRAINT PK_STORED_FILES PRIMARY KEY CLUSTERED ( ID ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
In questo caso la definizione del campo nel quale verrà memorizzato il file non viene denominato “BLOB” ma “Image”
Creati database e tabelle vediamo il codice necessario per la connessione ed effettuare lo statement INSERT INTO per inserire un record contenente il file ed i suoi dati.
//definisco la posizione del file string FilePath = @"test.bmp"; //estraggo la versione del file var versionInfo = FileVersionInfo.GetVersionInfo(FilePath); string ver = versionInfo.ProductVersion; //Creazione della connessione e definizione del comando INSERT MySqlConnection connection = new MySqlConnection(ConnectionString); MySqlCommand command = new MySqlCommand("INSERT INTO STORED_FILES (DESCRIPTION,SFILE,VERSION,EXT) VALUES (@Filename, @Data,@Ver,@Ext)", connection); //Assegno i valori a parametri command.Parameters.AddWithValue("@Filename", System.IO.Path.GetFileName(FilePath)); command.Parameters.AddWithValue("@Data", System.IO.File.ReadAllBytes(FilePath)); // command.Parameters.AddWithValue("@Ver", ver); command.Parameters.AddWithValue("@Ext", System.IO.Path.GetExtension(FilePath).Replace(".","")); //Apro la connessione al database connection.Open(); //Eseguo il comando command.ExecuteNonQuery(); //Chiudo la connessione al database connection.Close();
//definisco la posizione del file string FilePath = @"C:\foo.jpeg"; //estraggo la versione del file var versionInfo = FileVersionInfo.GetVersionInfo(openFileDialog1.FileName.ToString()); string ver = versionInfo.ProductVersion; //Creazione della connessione e definizione del comando INSERT SqlConnection connection = new SqlConnection(ConnectionString); SqlCommand command = new SqlCommand("INSERT INTO STORED_FILES (DESCRIPTION,SFILE,VERSION,EXT) VALUES (@Filename, @Data,@Ver,@Ext)", connection); //Assegno i valori a parametri command.Parameters.AddWithValue("@Filename", System.IO.Path.GetFileName(FilePath)); command.Parameters.AddWithValue("@Data", System.IO.File.ReadAllBytes(FilePath)); // command.Parameters.AddWithValue("@Ver", ver); command.Parameters.AddWithValue("@Ext", System.IO.Path.GetExtension(FilePath).Replace(".","")); //sostituisco il punto con uno spazio vuoto per memorizzare l'estensione del file //Apro la connessione al database connection.Open(); //Eseguo il comando command.ExecuteNonQuery(); //Chiudo la connessione al database connection.Close();