Il blog di Emanuele Mattei in ambito Database



Documenti analoghi
La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at] .

La tecnologia ASP.NET e i database

Il Web-Service SDMX dell ISTAT

GERARCHIE RICORSIVE - SQL SERVER 2008

Applicazioni grafiche

ISI s.r.l. Corso di Access 05 CREARE UN ELENCO MAILING ED INVIARE MESSAGGI DI POSTA ELETTRONICA Pag. 1/6

M.U.T. Modulo Unico Telematico. Specifiche tecniche interfaccia automatica per i Software Gestionali

La progettazione di un database non ha un unica soluzione. Quella proposta può essere quindi variata in base all esperienza del programmatore.

Approfondimenti. Il controllo di SQL Injection nelle pagine ASP e ASP.NET. U.A. 5 - Database in rete con le pagine ASP e ASP.

SISTEMI INFORMATIVI E TELEMEDICINA. 15. Usare XML con ADO.NET Prof. Mauro Giacomini

Questo modello di programmazione può essere utilizzato sia nelle:

Preparati per il compito in classe Modulo 5

Porta seriale Classe 4E Febbraio Form 1

Eliminare i contatti duplicati in MS Outlook

Installazione di Message Broadcasting. Eseguire le istruzioni riportate nel sito Web di Epson per effettuare il download e l'installazione.

Database Manager Guida utente DMAN-IT-01/09/10

LA GESTIONE DEI DATABASE

SCHEMA ER. Tutti i dati del carrello acquisti sono memorizzati nel database e quindi può essere costruito con più query.

Installazione di Filenet Content Services 5.3 di Emanuele Mattei (emanuele.mattei[at] .it)

Manuale per la configurazione di AziendaSoft in rete

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Nel corso del presente volume sono state scritte

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Visual Basic.NET La Gestione degli Errori di Federico BARBATI

Dispensa di database Access

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

Amministrare MySQL con PhpMyAdmin

Realizzare semplici applicazioni windows

Programmazione avanzata con Visual Basic 2005

FISH Sardegna ONLUS. Manuale Utente.

Accedere ai database esterni. Corso 2D: Accedere ai database esterni - R.Virili 1

Manuale Utente Albo Pretorio GA

Aggiornamento programma da INTERNET

Matematica in laboratorio

MANUALE PORTALE UTENTE IMPRENDITORE

ISTRUZIONI AGGIORNAMENTO TARIFFARIO 2006

Configuration Managment Configurare EC2 su AWS. Tutorial. Configuration Managment. Configurare il servizio EC2 su AWS. Pagina 1

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

Applicazione DBToolsSync Manuale Utente

FASI PER UNA CORRETTA INSTALLAZIONE DI ULTRA VNC E SKYPE

Corso SSIS. Pasquale LOPS

TOP DOWN. Preparati per il compito in classe Modulo 5

Esportare dati da Excel

Office Web Components in programmi C# da

PHP e MySQL. Guida scaricata da

Come produrre un file PDF da SAP facendo in modo che venga salvato in automatico in una cartella di rete

Relazioni tra tabelle

Documentazione sistema di acquisizione

Leggere un messaggio. Copyright 2009 Apogeo

I DATABASE Database relazionale

RE ON/OFF-LINE. L APP funziona su tutti i sistemi operativi Windows e, come applicazione desktop, su Windows 8 (non per Windows RT).

MySQL Database Management System

Per accedere all area di gestione collegarsi al sito e digitare nell apposito box i dati di accesso (username: xxx password: xxx).

Introduzione ai Sistemi di Gestione di Basi di Dati XML

Controllo Winsock di Visual Basic

Fratini Service di G. Fratini

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 4/5. ADO.NET e Connessione Prof. Mauro Giacomini

Struttura logica di un programma

Esercizio data base "Biblioteca"

Personalizzazione Stampe

Tutorial MYSQL. Creazione linked server con Microsoft SQL Server per lettura dati da MYSQL. Validità: Febbraio 2013

Le query. Lezione 6 a cura di Maria Novella Mosciatti

NVU Manuale d uso. Cimini Simonelli Testa

Probabilmente molti di voi conoscono o hanno già sentito parlare di Visual Basic 2008 e del Framework.NET, quindi non andremo ad approfondire molto

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008

I database relazionali (Access)

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro)

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

GCEWEB Denunce mensili in WEB

Mac Application Manager 1.3 (SOLO PER TIGER)

1 Introduzione Installazione Configurazione di Outlook Impostazioni manuali del server... 10

Istruzioni per creare un file PDF/A tramite software PDFCreator

DAL DIAGRAMMA AL CODICE

Le L z e ione n e d i d V isu s a u l B asi s c Prof.ssa Paola Goi 1

Guida operativa. My Legal Corner. BestSoft SOFTWARE IN SANITÀ

P03_S50AT01_Manuale Fax2Mail Rev 02 del 11/04/2013. Manuale Fax2Mail-Guida all uso

Manuale Operativo per l utilizzo della piattaforma E-Learning@AQ. Versione 1.1

COME CREARE E COLLEGARSI AD UN DATABASE MICROSOFT SQL SERVER O SUN MYSQL

APRIRE UN PROGRAMMA DI FOGLIO ELETTRONICO

ANALISI UTILIZZO D USO DEL PORTALE SMART

Lezioni di Laboratorio sui Data Base

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

ADO.Net. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Lezione 9. Applicazioni tradizionali

Corso breve su automazione d'ufficio

Esercitazione 4 JDBC

Applicazione Access annuale Universale mini-howto

BREVE MANUALE PER ARCHIVE 2.0. Schermata Principale

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

OSSIF WEB. Manuale query builder

Visual Basic FROM C TO DEDICATO AGLI UTENTI CON BASI DI C CHE SI AFFACCIANO AL MONDO DEL VISUAL BASIC. Contiene solo basi di linguaggio

Gestione degli archivi e stampe

InfoBusiness What s new (short version) Build

LINEE GUIDA PER I FORNITORI

Axios RE App. Installazione. ios. Android

Manuale d uso Software di parcellazione per commercialisti Ver [05/01/2015]

LEGGERE E VISUALIZZARE I DATI FILTRATI E CALCOLATI DI UNA TABELLA IN UNA PAGINA WEB

La progettazione di un database non ha un unica soluzione. Quella proposta può essere quindi variata in base all esperienza del programmatore.

Manuale Fax2Mail Guida all uso. Operativo

Transcript:

Il blog di Emanuele Mattei in ambito Database Programmazione database, ado.net e database mobile Come visualizzare ed inserire le immagini in un database Microsoft Access tramite Ado.Net Riporto l'articolo scritto per il sito iprogrammatori http://www.iprogrammatori.it/articoli/programmazione /art_adonet-inserire-e-salvare-immagine-in-un_131.aspx riguardante la possibilità di inserire e visulizzare le immagini in un database Microsoft Access. In questo articolo, vedremo come salvare delle immagini (formato jpeg e gif) in un campo di una tabella di un databse Microsoft Access. Il campo è di tipo oggetto ole. Con qualche modifica al codice, si può utilizzare anche per un database sql server con campo di tipo blob. A fine articolo trovate il sorgente di esempio utilizzato in questo articolo, per il lnguaggio Visual Basic Net e C# Ora vediamo, come inserire e visualizzare le immagini in un database, salvando lo stream dati dell'immagine in questo campo. Creazione del database. Si crea un nuovo database Microsoft Access 2003, con una tabella, una colonna di tipo contatore e l'altra di tipo oggetto ole, salvate la tabella ed il database. Creazione del progetto. Si crea un nuovo progetto di tipo windows application, nella finestra principale, inseriamo tre pulsanti, una casella di testo, una label un controllo picturebox, due radiobutton ed un controllo groupbox. Il tutto come mostrato in figura 1. Figura 1 I pulsanti, avranno il compito, di selezionare l'immagine, di salvare l'immagine nel database e di visualizzarla. Stesura del codice. Ora passiamo al codice. Utilizziamo lo spazio dei nomi, oledb per la gestione dei dati per il database

Microsoft Access e system.io per la gestione dei file. Di seguito si riporta tale dichiarazioni. VB.Net Imports System.Data.OleDb Imports System.IO C# using System.IO; using System.Data.OleDb; Il pulsante per la ricerca delle immagini, chiamato btnimmagine, avrà il compito di instanziare un oggetto di tipo openfiledialog, per la ricerca delle immagini, ed impostare la proprietà text della casella di testo (txtimmagine) con il percorso e nome del file immagine. Di seguito si riporta il frammento di codice di tali operazioni. VB.Net Private Sub btnimmagine_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btnimmagine.click Dim dlgimmagine As New OpenFileDialog() dlgimmagine.title = "Seleziona un immagine da importare" dlgimmagine.multiselect = False dlgimmagine.filter = "Formato JPEG(*.jpg) *.jpg Formato GIF (*.gif) *.gif" dlgimmagine.filterindex = 2 dlgimmagine.filename = "" dlgimmagine.showdialog() txtimmagine.text = dlgimmagine.filename End Sub C# private void btnimmagine_click(object sender, EventArgs e) OpenFileDialog dlgimmagine = new OpenFileDialog(); dlgimmagine.title = "Seleziona un immagine da importare"; dlgimmagine.multiselect = false;dlgimmagine.filter = "Formato JPEG(*.jpg) *.jpg Formato GIF (*.gif) *.gif"; dlgimmagine.filterindex = 2; dlgimmagine.filename = ""; dlgimmagine.showdialog(); txtimmagine.text = dlgimmagine.filename;

Il pulsante per il salvataggio dell'immagine (chiamato BtnSalva) avrà il compito di salvare in formato stream dati l'immagine nel database, si utilizzerà la classe filestream, per la gestione del file, mentre la classe dataset, oledbadapter oledbcommandbuilder per la gestione dei dati, in particolare per il salvataggio dei dati. La variabile di tipo array byte, conterrà le informazioni dell'immagine selezionata. Di seguito si riporta il codice delle suddette dichiarazioni. VB.Net Private Sub btnsalva_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btnsalva.click If txtimmagine.text Is String.Empty Then Exit Sub 'Creo lo stream dati byte, della immagine Dim fs As FileStream = New FileStream(txtimmagine.Text, FileMode.OpenOrCreate, FileAccess.Read) Dim ImgData(fs.Length) As Byte fs.read(imgdata, 0, System.Convert.ToInt32(fs.Length)) fs.close() 'Mi connetto al db Dim sql As String = "SELECT * FROM dati" Dim condati As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; " & "Data Source=C:\dbimmagine.mdb") Try If condati.state <> ConnectionState.Open Then condati.open() 'oggetti per il salvataggio dei dati Dim adapterdati As OleDbDataAdapter = New OleDbDataAdapter(sql, condati) Dim cmdbuilder As OleDbCommandBuilder = New OleDbCommandBuilder(adapterDati)Dim dtsdati As New DataSet() adapterdati.missingschemaaction = MissingSchemaAction.AddWithKey 'Carico il dataset adapterdati.fill(dtsdati, "Dati") 'Creo un datarow che mi rappresenta la nuova riga

Dim dtrriga As DataRow = dtsdati.tables("dati").newrow() dtrriga("immagine") = ImgData ' aggiungo la riga al dataset dtsdati.tables("dati").rows.add(dtrriga) 'Salvo i dati modificati adapterdati.update(dtsdati, "Dati") MessageBox.Show("Immagine salvata") Catch ex As Exception MessageBox.Show("Errore: " & ex.message) Finally 'Chiudo la connessione If Not condati Is Nothing Then If condati.state = ConnectionState.Open Then condati.close() condati.dispose() End Try End Sub C# private void btnsalva_click(object sender, EventArgs e) if (txtimmagine.text == string.empty) return; //Creo lo stream dati byte, della immagine FileStream fs = new FileStream(txtimmagine.Text, FileMode.OpenOrCreate, FileAccess.Read); Byte[] ImgData = new Byte[fs.Length]; fs.read(imgdata, 0, System.Convert.ToInt32(fs.Length)); fs.close(); //Mi connetto al db

string sql = "SELECT * FROM dati"; OleDbConnection condati = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; " + "Data Source=C:\\dbimmagine.mdb"); try if (condati.state!= ConnectionState.Open) condati.open(); // oggetti per il salvataggio dei dati OleDbDataAdapter adapterdati = new OleDbDataAdapter(sql, condati); OleDbCommandBuilder cmdbuilder = new OleDbCommandBuilder(adapterDati); DataSet dtsdati = new DataSet(); adapterdati.missingschemaaction = MissingSchemaAction.AddWithKey; //Carico il dataset adapterdati.fill(dtsdati, "Dati"); //Creo un datarow che mi rappresenta la nuova riga DataRow dtrriga = dtsdati.tables["dati"].newrow(); dtrriga["immagine"] = ImgData; // aggiungo la riga al dataset dtsdati.tables["dati"].rows.add(dtrriga); //Salvo i dati modificati adapterdati.update(dtsdati, "Dati");MessageBox.Show("Immagine salvata"); catch (Exception ex) MessageBox.Show("Errore: " + ex.message); finally //Chiudo la connessione

if (condati == null) if (condati.state == ConnectionState.Open) condati.close(); condati.dispose(); Il pulsante per la visualizzazione dell'immagine (denominato btnvisualizza) avrà il compito di visualizzare l'immagine in un controllo picturebox, se viene scelta la radiobutton con il valore "si", ossia per il salvataggio fisico dell'immagine, verrà creato un file immagine sul computer, altrimenti, se l'opzione selezionata ha il valore no, non verrà creato nessun file immagine. Utilizzeremo le classi filestream e binarywriter per la generazione del file, mentre le classi oledbcommand, oledbdatareader per la lettura dei dati. Di seguito si riporta il codice per la visualizzazione dell'immagine. VB.Net Private Sub btnvisualizza_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btnvisualizza.click Dim sql As String = "SELECT * FROM dati" Dim condati As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; " & "Data Source=C:\dbimmagine.mdb") Try If condati.state <> ConnectionState.Open Then condati.open() Dim cmd As OleDbCommand = New OleDbCommand(sql, condati) Dim fs As FileStream Dim binaryscrivi As BinaryWriter Dim Dimensionebuffer As Integer = 300000 Dim outbyte(300000-1) As Byte Dim reader As OleDbDataReader = cmd.executereader(commandbehavior.sequentialaccess) 'leggo il primo record

reader.read() 'senza salvataggio della immagine If rdbsi.checked = False Then Dim arraystreamdati() As Byte = reader.item("immagine") If arraystreamdati.length > 0 Then 'Carico in uno memorystream l'array strem dati Dim Stream As MemoryStream = New MemoryStream(arrayStreamDati, True) Stream.Write(arrayStreamDati, 0, arraystreamdati.length) 'Creo un oggetto bitmap contente l'immagine Dim immagine As Bitmap = New Bitmap(Stream) 'carico nella picture box PictureBox1.Image = immagine PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage 'Chiudo lo stremadati Stream.Close() Else 'Salvo l'immagine sul computer fs = New FileStream("C:\pippo.bmp", FileMode.OpenOrCreate, FileAccess.Write) binaryscrivi = New BinaryWriter(fs) reader.getbytes(1, 0, outbyte, 0, Dimensionebuffer) binaryscrivi.write(outbyte) binaryscrivi.flush() 'Chiudo gli oggetti binaryscrivi.close() fs.close() reader.close() 'Visualizzo l'immagine Dim immagine As Image = Nothing immagine = Image.FromFile("C:\pippo.bmp") PictureBox1.Image = immagine

PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage Catch ex As Exception MessageBox.Show("Errore: " & ex.message) Finally 'chiusura connessione If Not condati Is Nothing Then If condati.state = ConnectionState.Open Then condati.close() condati.dispose() End Try End Sub C# private void btnvisualizza_click(object sender, EventArgs e) string sql = "SELECT * FROM dati"; OleDbConnection condati = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; " + "Data Source=C:\\dbimmagine.mdb"); try if (condati.state!= ConnectionState.Open) condati.open(); OleDbCommand cmd = new OleDbCommand(sql, condati); FileStream fs;

BinaryWriter binaryscrivi; Int32 Dimensionebuffer = 300000; Byte[] outbyte = new Byte[300000-1]; OleDbDataReader reader = cmd.executereader(commandbehavior.sequentialaccess); //leggo il primo record reader.read(); //senza salvataggio della immagine if (rdbsi.checked == false) Byte[] arraystreamdati = (Byte[])reader["immagine"];// Item["immagine"]; if (arraystreamdati.length > 0) //Carico in uno memorystream l'array strem dati MemoryStream Stream = new MemoryStream(arrayStreamDati, true); Stream.Write(arrayStreamDati, 0, arraystreamdati.length); //Creo un oggetto bitmap contente l'immagine Bitmap immagine = new Bitmap(Stream); //carico nella picture box PictureBox1.Image = immagine; PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; //Chiudo lo stremadati Stream.Close(); else //Salvo l'immagine sul computer fs = new FileStream("C:\\pippo.bmp", FileMode.OpenOrCreate, FileAccess.Write); binaryscrivi = new BinaryWriter(fs); reader.getbytes(1, 0, outbyte, 0, Dimensionebuffer); binaryscrivi.write(outbyte); binaryscrivi.flush(); //Chiudo gli oggetti binaryscrivi.close(); fs.close();

reader.close(); //Visualizzo l'immagine Image immagine = null;immagine = Image.FromFile("C:\\pippo.bmp"); PictureBox1.Image = immagine; PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; catch (Exception ex) MessageBox.Show("Errore: " + ex.message); finally //chiusura connessione if (condati!= null) if (condati.state == ConnectionState.Open) condati.close(); condati.dispose(); Conclusioni: In questo articolo, abbiamo visto come tramite le classi del namespace system.io e system.oledb, possiamo salvare un immagine in un database Microsoft Access e visualizzarle in un controllo picturebox, sia con e senza creazione del file immagine. Una soluzione, per non dipendere da file locali. Tramite la parola download si può scaricare il file di esempio utilizzato nell'articolo. Download. Posted: ott 20 2008, 11.15 by EmanueleM with no comments Filed under: ADO.Net - Net

Comments No Comments (C) 2007 User Group Italiano di SQL Server