Visual Basic 2010 e ADO.NET: accesso ai dati / prima puntata

La creazione ed il mantenimento di basi di dati è divenuta un'operazione fondamentale in qualunque contesto lavorativo: dalle aziende di più grandi dimensioni, passando per enti governativi, organizzazioni senza scopo di lucro, piccole ...
Visual Basic 2010 e ADO.NET: accesso ai dati / prima puntata

La creazione ed il mantenimento di basi di dati è divenuta un’operazione fondamentale in qualunque contesto lavorativo: dalle aziende di più grandi dimensioni, passando per enti governativi, organizzazioni senza scopo di lucro, piccole e medie imprese. I database sono utilizzati per le applicazioni più svariate: gestione degli archivi dei clienti, gestione degli ordini, magazzino, bilanci, gestione del personale e così via.

In questo articolo vedremo com’è possibile interagire con una base dati di esempio ricorrendo a Visual Basic 2010 e ad ADO.NET. Si utilizzerà Configurazione guidata origine dati per stabilire una connessione ad un database Access e generare un “dataset” ossia un sottoinsieme di campi e dei dati in essi conservati (record) a partire dalle informazioni memorizzate nelle tabelle della base dati. Ricorrendo al linguaggio SQL si potranno filtrare i dati d’interesse effettuando alcune interrogazioni.

comprende Visual Basic 2010 Express, Visual C# 2010 Express, Visual C++ 2010 Express, Visual Web Developer 2010 Express e Visual Studio 2010 Express for Windows Phone.
L’immagine in formato ISO di Visual Studio 2010 Express è prelevabile cliccando qui.

Microsoft Visual Studio 2010 può essere utilizzato anche per creare nuovi database sebbene il prodotto sia stato concepito, in primis, per visualizzare, analizzare e modificare il contenuto di basi di dati già esistenti.

Introdotto nel 2002, ADO.NET resta il modello di riferimento per l’interazione con le varie tipologie di database impiegato in Visual Studio. Nel corso degli anni è passata molta acqua sotto i ponti ed ADO.NET è divenuto un prodotto sempre più completo ed evoluto: oggi può essere utilizzato come strumento unico per l’accesso ai dati, in numerosi scenari (in locale, in configurazioni client-server, su Internet).

La versione di ADO.NET inclusa in Visual Studio 2010 è pienamente compatibile con la versione 2008 dell’ambiente di sviluppo di Microsoft pur introducendo due importanti nuove tecnologie. Entrambe sono destinate ai programmatori più evoluti: l’una si chiama LINQ (Language-Integrated Query), l’altra ADO.NET Entity Framework.
La prima offre la possibilità di mettere a punto delle interrogazioni “object-oriented” usando una sintassi simile a SQL. Grazie a LINQ vengono definiti una serie di operatori che consentono query verso basi di dati che rappresentano i dati sotto forma di oggetti. Il risultato dell’interrogazione consiste in una collezione di oggetti che vengono caricati in memoria e che possono essere enumerati secondo le esigenze.
ADO.NET Entity Framework, invece, introduce un nuovo modello ad oggetti (unitamente con una serie di strumenti e di funzionalità “inedite”) capace di rendere le applicazioni maggiormente svincolate rispetto a singoli motori database o modelli logici.

Introduzione all’uso di ADO.NET per l’accesso ai dati

Per attingere ai dati conservati in un database, ADO.NET usa molteplici oggetti. In primo luogo, viene attivata una connessione con la base dati quindi viene creato un dataset (usando il Configurazione guidata origine dati) ossia una rappresentazione di una o più tabelle del database. A questo livello, da Visual Basic 2010, così come dagli altri componenti di sviluppo del pacchetto Visual Studio 2010, non vengono direttamente modificati i dati “reali” presenti nel database ma una “copia” di essi.
Il Configurazione guidata origine dati provvede ad aggiungere uno schema in formato XML al progetto sul quale si sta lavorando associando al dataset un table adapter ed un data navigator: grazie ad essi, il programmatore e l’utente finale potranno recuperare le informazioni dalla base dati, applicarvi modifiche, spostarsi da un record all’altro.
Per “connettere” le informazioni contenute nei dataset ai “controlli” (caselle di testo, griglie, pulsanti,…) presenti in una form di Visual Basic, si ricorre alla finestra Data Sources od all’impostazione della proprietà DataBindings.

In questo servizio vedremo come usare ADO.NET da un’applicazione Visual Basic 2010: una procedura molto simile, che consiste nella generazione di dataset e nel successivo collegamento ad altri elementi in grado di visualizzare i dati, vale nel caso delle applicazioni web ASP.NET o Silverlight e delle applicazioni client WPF (Windows Presentation Foundation).

Connessione ad una base di dati Microsoft Access 2007

Iniziamo col precisare che la presenza di Access non è necessaria. Per accedere ad una base di dati creata in tale formato non è necessario che il DBMS di Microsoft, parte del pacchetto Office 2007, sia installato sul sistema in uso. Alcuni componenti Microsoft, tuttavia, possono essere comunque richiesti, a seconda della configurazione del sistema in uso. Nel caso in cui si dovesse ottenere un messaggio d’errore che manifesta l’impossibilità di collegarsi alla base dati (formato non valido o non supportato), è necessario collegarsi con questa pagina quindi scaricare ed installare le librerie runtime di Access 2007.

Il primo passo consiste nell’avviare Visual Basic 2010, cliccare su Nuovo progetto…, scegliere Applicazione Windows Form e “battezzarla” ad esempio ProvaADONET (casella Nome in basso). Dopo aver cliccato sul pulsante OK, si aprirà l’ambiente di sviluppo di Visual Basic.

Dal menù Dati, bisogna quindi scegliere Aggiungi nuova origine dati…: apparirà immediatamente la finestra principale di Configurazione guidata origine dati. Si tratta di una funzionalità che consente di stabilire una connessione con la base dati e di preparare l’applicazione in corso di sviluppo alla ricezione dei dati. La procedura guidata consente di optare per un database memorizzato localmente, per una base dati remota, per un servizio web o per un oggetto dati “personalizzato”.

Connessione al database Access e creazione del dataset

Cliccando due volte sull’icona Database apparirà una nuova finestra contenente due scelte: Dataset e Entity Data Model. Nel nostro caso optiamo per Dataset sebbene l’altra possibilità si riveli molto utile perché permette al programmatore di interagire con la base dati ricorrendo a specifici oggetti e proprietà, svincolandosi del tutto dal formato del database “sottostante” e dalla struttura di tabelle e colonne.

Dopo aver scelto Dataset, Visual Basic richiede di indicare la base dati che si intende impiegare. Nella finestra proposta a video, va indicata la cosiddetta stringa di connessione ossia l’informazione usata da Visual Basic per aprire il database ed estrarre i dati. Nella stringa di connessione sono sempre presenti un percorso facente riferimento alla base dati, il nome del database e talvolta anche dati sensibili quali nome utente e password.

Nel caso in cui Visual Studio fosse già impostato per preferire una specifica tipologia di connessione, cliccando sul pulsante Nuova connessione…, apparirà la finestra Aggiungi connessione: è sufficiente cliccare su Modifica… e selezionare dall’elenco File di database Microsoft Access selezionando poi OK.

Nel campo Nome file di database va specificato il percorso contenente la base dati Microsoft Access da aprire.

A titolo esemplificativo, si provi a scaricare questo file e a salvare su disco fisso, in una cartella di propria scelta, il database Northwind 2007.accdb (è contenuto dell’archivo Zip AceSampleCode.zip). Si tratta di un database di esempio, realizzato da Microsoft, nel formato Access 2007.

Il contenuto delle caselle Nome utente e Password può essere lasciato invariato dal momento che il database non è protetto in alcun modo.

A questo punto, cliccando su Test connessione, Visual Basic 2010 dovrebbe mostrare il messaggio Test della connessione riuscito. Diversamente (visualizzazione dell’errore “formato di database non riconosciuto“), si dovrà chiudere Visual Basic ed installare le runtime di Access 2007, come precedentemente indicato.

Cliccando su OK si tornerà alla finestra Seleziona connessione dati: con un clic sul pulsante “+” in corrispondenza della dizione “Stringa di connessione“, apparirà la stringa di connessione usata da Visual Basic 2010 per collegarsi alla base dati in formato Access 2007.

La stringa di connessione specifica l’uso del provider Microsoft.ACE.OLEDB.12.0, un componente a livello più basso che s’incarica appunto di effettuare la connessione ad una base dati Access e di estrarvi i dati.
I due più famosi provider offerti da Visual Studio sono Microsoft OLE DB e SQL Server ma esistono anche provider sviluppati da terze parti per l’accesso ad altri popolari formati di database.

Premendo il pulsante Avanti, Visual Basic 2010 informa lo sviluppatore sul fatto che è stato selezionato un database locale che è non correntemente inserito nel progetto in corso di realizzazione. Il messaggio appare solamente la prima volta che si tenta la connessione verso una base dati memorizzata localmente. Cliccando su No, si evita la creazione di una copia del database Access: dal momento che non si sta ancora lavorando ad un’applicazione commerciale che verrà poi redistribuita, è per adesso la scelta più consigliata.

A questo punto comparirà la finestra Salva stringa di connessione nel file di configurazione dell’applicazione. Per impostazione predefinita, la stringa di connessione viene memorizzata nei file di configurazione del progetto: è comunque suggerito lasciare spuntata la casella poiché, nel caso in cui la locazione del database dovesse mutare, si potrà semplicemente aggiornare la stringa di connessione editando il file di configurazione (dalla finestra Esplora soluzioni).

Cliccando ancora su Avanti, Visual Basic analizzerà la struttura del database proponendo l’elenco delle tabelle e delle eventuali viste (“visualizzazioni“) configurate.
Com’è ovvio, Visual Studio permette di utilizzare solamente delle porzioni di un database oppure di combinare basi di dati differenti.

Gli elementi mostrati nella finestra Seleziona oggetti di database sono chiamati, in inglese, Database objects ed oltre a tabelle, campi, record, viste, sono incluse le cosiddette “stored procedures“, funzioni ed altri oggetti univoci rilevati all’interno del database.

Aggiunta delle tabelle e finestra di progettazione

Nel nostro progetto, Visual Basic 2010 ha provveduto ad assegnare al dataset il nome Northwind_2007DataSet: tale appellativo è comunque liberamente modificabile.

Per consultare la lista delle tabelle presenti nel database Northwind di esempio, è sufficiente cliccare sulla voce Tabelle.

Spuntando la casella posta a sinistra della dizione Tabelle, si richiederà a Visual Basic 2010 l’aggiunta di tutte le tabelle all’interno del progetto. Cliccando su Fine, dopo qualche secondo di attesa, la finestra Configurazione guidata origine dati si chiuderà e tornerà ad essere visualizzato l’ambiente di sviluppo vero e proprio.

A questo punto, suggeriamo di salvare il progetto cliccando su File, Salva tutto (è possibile lasciare inalterato il nome ProvaADONET oppure assegnarne un altro).

Nella finestra Esplora soluzioni, Visual Basic elenca i principali file ed i componenti facenti parte del progetto in corso di elaborazione. Il file con estensione .xsd conteniene una serie di informazioni descrittive, in formato XML, sulla struttura delle tabelle, dei campi, dei tipi di dato e degli altri elementi presenti nel dataset appena generato.

Cliccando su Northwind_2007DataSet.xsd quindi sul piccolo pulsante Visualizza finestra di progettazione, Visual Basic 2010 propone una rappresentazione visuale della struttura della base di dati.

Questo strumento si chiama Dataset Designer: da qui è possibile modificare i cosiddetti table adapters, table adapter queries, le tabelle dati e le relazioni tra i vari campi. Sempre dalla finestra di progettazione, si possono revisionare ed eventualmente variare alcune delle caratteristiche del database quali, ad esempio, la lunghezza massima dei campi ed il formato dei dati permesso.

Cliccando per esempio sul campo Company (memorizza il nome delle aziende clienti di una ipotetica società di servizi) della tabella Customers, consultando la finestra delle proprietà, in corrispondenza del valore MaxLength è indicata la lunghezza massima accettata. Il valore può essere modificato sulla base delle esigenze del programmatore e del committente.

Nella prossima puntata analizzeremo le possibilità offerte dalla finestra Origine dati ed inizieremo a collegare le informazioni conservate nel database con alcuni componenti Windows Form.

Ti consigliamo anche

Link copiato negli appunti