VB.NET + Firebird : Primi esempi di utilizzo

Come promesso, in questo articolo spiegherò come poter utilizzare Firebird da VB.NET, un’accoppiata perfetta dal momento che sia Firebird che Visual Basic .NET (versione express) sono totalmente Free! L’articolo precedente ci è servito per capire come si crea e gestisce un database con Firebird.

Cominciamo dunque a scaricare tutto ciò di cui abbiamo bisogno. Ci serve innanzitutto il provider .NET per Firebird, che ci permetterà di sviluppare e testare le applicazioni. Tale installazione non sarà necessaria sui computer che utilizzeranno la nostra applicazione. Di questa installazione, una volta finito il programma, ci servirà un’unica DLL che andrà distribuita insieme all’eseguibile. Da questa pagina è possibile scaricare il provider .NET.

NOTA
Come vedrete  (almeno alla data attuale, in cui scrivo), ci sono varie versioni, scartando la beta, che non ho provato, l’unica che a me funziona correttamente è la 1.7.2, ed è con questa che illustro questo articolo.

Installiamo dunque il provider, alla fine dell’installazione, in C:\Programmi, ci sarà una cartella dal nome FirebirdNETProvider1.7, in questa cartella il file che ci interessa è FirebirdSql.Data.Firebird.dll, tale DLL andrà distribuita insieme al programma e si dovrà trovare nello stesso percorso in cui si trova l’eseguibile.

Ci manca ancora qualcosa: la versione embed di Firebird, che possiamo scaricare da questa pagina cliccando sull’immagine reclamizzante l’ultima versione (2.1.1 alla data in cui scrivo) , nella sezione Win32 (o win64 se avete Vista a 64Bit) scarichiamo quindi il file avente la parola “EMBED” alla fine del nome del file. Questo è un file .zip e al suo interno sono contenute le DLL che permettono a Firebird di eseguire il suo lavoro, la DLL principale è fbembed.dll ma per esperienza personale è meglio copiare tutte le DLL qui presenti nello stesso percorso dell’eseguibile e distribuirle insieme all’applicazione, onde evitare alcuni strani errori (capita spesso che, copiando unicamente fbembed.dll, viene restituito l’errore impossibile caricare la DLL ‘fbembed’, che è molto strano dal momento che la DLL c’è, il problema si risolve copiando anche le altre librerie a collegamento dinamico).

Per cui ricapitolando: abbiamo installato il provider .NET di Firebird e sappiamo da dove recuperare la libreria  chiamata FirebirdSql.Data.Firebird.dll, abbiamo scaricato la versione embed di Firebird, l’abbiamo estratta e quindi abbiamo a portata di mano tutte le dll della versione embed che ci servono.

Cominciamo quindi a scrivere un semplice programmino che sfrutti Firebird. In questa sede ovviamente descriverò soltanto i passaggi principali che permettono di integrare Firebird nella nostra applicazione vb.net tralasciando tutto il resto. E’ comunque possibile, per gli utenti registrati, scaricare il progetto completo e funzionante alla fine dell’articolo.

Quando avviamo un nuovo progetto che dovrà sfruttare Firebird, dobbiamo innanzitutto ricordarci di aggiungere il riferimento al provider .NET, questo lo si fa cliccando su Progetto -> Aggiungi riferimento:

vbnet_firebird_00

Appare quindi la finestra con tutti i riferimenti che è possibile referenziare, cerchiamo quello di Firebird, (Firebird .NET Data Provider) selezioniamolo e clicchiamo su OK:

vbnet_firebird_01

NOTA
Come detto in precedenza, almeno io personalmente mi ritrovo il riferimento a Firebird .NET Data Provider soltanto se installo la versione 1.7.2 (che in vb.net viene indicata come 1.7.1.0 … altro mistero!). Se qualcuno ha chiaro il motivo di tale stranezza, può farlo presente mandando una email o lasciando un commento alla fine dell’articolo.

EDIT 26/12/2010
Riprendendo questo progetto su Windows7 con su installato VB.NET2008 express ho notato come nessuna delle installazioni mi riporti il .NET dataprovider nell’elenco dei componenti aggiuntivi. L’unico sistema che mi ha funzionato è stato quello di installare il .NET provider versione 2.5.2 (alla data attuale l’ultima versione è la 2.6.0 che non mi funziona). Una volta installata la versione 2.5.2, il .NET data provider nemmeno risulta disponibile. Basterà selezionare il tab “Sfoglia” dalla finestra aggiungi riferimento e selezionare il fileFirebirdSql.Data.Firebird.dll dalla cartella di installazione (tipicamente C:\Program Files\Firebird Client\). In questo modo sarà possibile eseguire i passi successivi importanto però FirebirdSql.Data.FirebirdClient al posto di FirebirdSql.Data.Firebird. Sarà inoltre necessario modificare la stringa di connessione come spiegato in seguito.

Arrivati a questo punto, con la direttiva Imports, importiamo lo spazio dei nomi di Firebird:

Imports FirebirdSql.Data.Firebird

Come detto nella nota precedente, installando il .NET data provider più recente, lo spazio dei nomi da importare sarà diverso:

Imports FirebirdSql.Data.FirebirdClient

Avremo così a disposizione tutti gli oggetti che ci permettono di effettuare connessione, query ecc ai database: FBConnection, FBCommand,FBDataAdapter ecc ecc. Per chi ha già utilizzato oledb, i nomi di queste proprietà risulteranno molto familiari, eseguono difatti le stesse identiche funzioni ma su database Firebird, per cui potrete notare l’estrema semplicità di utilizzo.

Altro punto importante: la stringa di connessione. La stringa di connessione di Firebird è forse la più semplice in assoluto:

Dim Str_Co As String = "Database=RUBRICA.FDB;ServerType=1"

Con le nuove versioni del .NET Data Provider è necessario anche specificare le credenziali di accesso per cui la stringa di connessione andrà modificata con la seguente:

Public Str_Co As String = “Database=RUBRICA.FDB;ServerType=1;username=sysdba;password=masterkey;”

La stringa di connessione l’ho inserita nel modulo “variabili”.

Basta difatti specificare ServerType=1, se non diamo il percorso del database è implicito che si trovi nello stesso percorso dell’eseguibile.

Nota
Su Windows Vista, alcuni utenti riscontrano un errore quando provano ad effettuare la connessione, per ovviare al problema, bisogna inserire anche nome utente e password alla stringa di connessione, come specificato nel commento #5 in fondo all’articolo (grazie all’utente Cosmo per la gradita segnalazione).

Altro punto essenziale per il funzionamento dell’applicazione: dovete copiare tutte le DLL dette prima (FirebirdSql.Data.Firebird.dll e tutte quelle della versione embed) nella cartella bin/debug (se lavorate in modalità debug) oppure bin/release per il progetto finito e compilato, diversamente l’applicazione non funzionerà! Da notare che quando distribuirete l’applicazione, dovrete distribuire anche le DLL che, fortunatamente!, non dovranno essere registrate con regsvr32! Per cui basterà soltanto copiarle nello stesso percorso dell’applicazione e basta!

Nel progetto finito potrete notare alcune pratiche di buona programmazione che un software serio dovrebbe avere. Cito soltanto alcuni esempi:

  • Avendo limitato nel database nome e cognome a 50 caratteri ed e-mail a 100 caratteri, di conseguenza anche le textbox relative saranno limitate (tramite la proprietà MaxLength).
  • Avendo una DataGridView che visualizza i dati, l’utente si aspetta che accada qualcosa quando si effettua il doppio click su una riga, per cui ho intercettato l’evento doppioclick sulla DataGridView associandogli la stessa sub definita per il tasto edit (vedi sub chiamata Edit, alla quale sono collegati due eventi).
  • Ho utilizzato lo stesso form sia per l’inserimento di nuove persone che per la loro modifica, le funzioni cambiano in base ad un indice numerico pubblico, se tale indice assume valore -1, il form saprà che dovrà comportarsi da form di inserimento, se il valore assunto è differente da -1 allora il form si comporterà da form di modifica, e l’indice rappresenta in pratica l’id del record nel database. Eventuali errori di query verranno segnalati da un messagebox, utile durante il debug.
  • La disattivazione dei tasti Modifica ed Elimina se nel database non ci sono record.
  • La corretta disposizione dei TabIndex che consentono di navigare tra i pulsanti utilizzando il tasto TAB sulla tastiera (a qualche inesperto questo può far sorridere, ma tenete conto che in ambito produttivo i professionisti molto difficilmente utilizzano il mouse per spostarsi sul tastino successivo mentre stanno inserendo dati in una schermata).

applicazione_firebirdvbnet_00

applicazione_firebirdvbnet_01

Ci sono numerose altre cose che vanno sicuramente migliorate, come la verifica della presenza del database, del corretto inserimento dell’indirizzo email, un about-box, funzioni di stampa ecc, oltreché un ampliamento del database, ma questo non è slo copo di questo tutorial, che ha la sola funzione di dare il “LA” all’avvio dello sviluppo di applicazioni vb.net che sfruttano database Firebird. Il codice comunque è abbondantemente commentato e il suo funzionamento dovrebbe apparire abbastanza semplice anche a chi si avvicina la prima volta allo sviluppo di applicazioni su database. Sottolineo soltanto che in questa applicazione, non essendo sicuramente un’applicazione in cui il database è condiviso con altri utenti che possono fare modifiche in contemporanea, si lavora in modalità disconnessa, ovvero i dati vengono prelevati dal database tramite un adattatore dati e dall’adattatore dati passano in una tabella dati, la quale viene associata alla datagridview, stesso identico discorso per la modalità modifica.

Ricordo che per scaricare il sorgente di esempio bisogna essere registrati, non costa nulla!

Nel sorgente, nella cartella bin/debug NON sono contenute le DLL che dicevo prima, che consentono il funzionamento del database Firebird, per cui seguite le istruzioni dette prima per recuperarle e inserirle in questa cartella. NON è contenuto nemmeno il database di esempio rubrica.fdb, che potete scaricare dall’articolo precedente. Ho fatto così perchè i files ci sono già in giro, basta un minimo di assemblaggio (che dovrete comunque imparare a fare), e per rendere più leggero il download (62Kb attuali contro gli inutili 2Mb e rotti se era compreso di tutto).

Download: [download#22]

Se questo articolo ti è piaciuto, condividilo su un social:
  •  
  •  
  •  
  •  
  •  
  •  
Se l'articolo ti è piaciuto o ti è stato utile, potresti dedicare un minuto a leggere questa pagina, dove ho elencato alcune cose che potrebbero farmi contento? Grazie :)