Ancora esempi di utilizzo di database da VB.NET : Colleghiamoci con MySQL
Abbiamo visto nella puntata precedente come collegare un database Firebird con VB.NET. In quest’altro articolo vedremo invece come fare la stessa cosa, ma utilizzando un database MySQL. MySQL è attualmente di proprietà della SUN Microsystems (ai più nota per aver creato il linguaggio Java) e viene distribuito con licenza free e con licenza commerciale, è forse il RDBMS più utilizzato in sistemi open source basati su Linux con Server Apache, non per altro è nata quella che si usa chiamare piattaforma LAMP (Linux Apache MySql PHP) , strautilizzata per l’hosting di siti web
Anche questo sito si trova su piattaforma LAMP, le pagine sono scritte in PHP, gli articoli sono memorizzati su database MySQL, e il server è Apache su sistema operativo Linux. Anche Wikipedia, per esempio, utilizza la piattaforma LAMP. Il motivo è presto detto: non bisogna pagare licenze a nessuno e i software essendo open source sono estremamente stabili dal momento che tanti appassionati ci lavorano su con il solo intento di migliorarli.
La cosa che a me personalmente interessa di più nello sviluppo di applicazioni VB.NET per database MySQL è appunto la possibilità di gestire tramite applicazioni VB i database su server remoti utilizzati per la gestione dei siti web. Quindi in realtà questo articolo è più orientato verso utenti che già utilizzano MySQL sui loro siti web dal momento che tralascerò tutta la parte relativa all’installazione di MySQL sul PC per effettuare esperimenti (e per la quale trattazione potete trovare un’infinità di materiale semplicemente utilizzando Google). Se vi scocciate ad installare manualmente MySQL potete ricorrere a soluzioni free e/o opensource quali EasyPhp o Wamp che installano su windows in un solo colpo server apache, mysql e php (io personalmente sono utente da tanti anni di EasyPhp, con il quale mi trovo molto bene, l’ultima versione installa anche SQLite).
Abbiamo innanzitutto bisogno di un driver MySQL per la piattaforma .NET (ovvero un .NET Data Provider), ne esistono tanti in giro sia free che commerciali.
Avevo iniziato ad utilizzare un progetto della amatissima Sourceforge: MySQLDriverCS, disponibile in questa pagina, ma l’ho abbandonato dopo un po’, primo perchè non è più aggiornato da tempo e poi perchè causa non pochi problemi (ad esempio: stranamente alcune volte rileva i campi di testo dei database come se fossero campi blob contenenti immagini, per cui importando tali dati in una datagridview, questa mi da errore perchè non trova le immagini!).
La stessa Sun ha sviluppato i driver MySQL per numerose piattaforme (nominati come MySQL Connector) , tra cui quella per .NET disponibile con licenza GPL a questa pagina (nel momento in cui scrivo, l’ultima versione stabile è la 5.2 ed è presente la 6.0 in versione alpha – che non ho provato -), ed è con questa che procederò all’esempio.
Nota: se avete bisogno di una licenza per uso commerciale è chiaramente indicato che dovete contattare la SUN, altrimenti potete ricorrere a MySQLDriverCS che non ha limitazioni di nessun tipo, tranne che nel presentare alcuni piccoli difetti.
Scarichiamo quindi il MySQL .NET data provider della SUN e installiamolo (possiamo tranquillamente scegliere l’installazione “Typical”).
Apriamo Visual Basic e avviamo un nuovo progetto Windows Forms, per prima cosa referenziamo il data provider con il solito sistema : Progetto -> Aggiungi riferimento
Selezioniamo quindi MySQL.Data dall’elenco e diamo l’OK:
Iniziamo la nostra applicazione importando lo spazio dei nomi relativo:
Imports MySql.Data.MySqlClient |
A questo punto siamo pronti per lavorare, avremo a disposizione tutti i tipi per effettuare connessioni, query ecc come con qualsiasi altro data provider per .NET (in pratica ci saranno gli oggetti: MysqlConnection, MysqlDataAdapter ecc ecc).
E… La stringa di connessione? E’ abbastanza semplice, possiamo ricorrere all’oggetto MySqlConnectionStringBuilder oppure creare manualmente la stringa in questo modo (supponendo di avere inserito i dati di accesso in TextBox predisposte sul form):
Dim Str_Co As String = "host=" & txtServer.Text.Trim & ";" & _ "username=" &; txtUser.Text.Trim & ";" & _ "password=" & txtPassword.Text.Trim & ";" & _ "database=" & txtDatabase.Text.Trim |
Nella stringa di connessione si possono aggiungere anche altri parametri (come la porta se stranamente non dovesse essere la 3306 di default, il timeout per la connessione e tanto altro che è possibile trovare nella documentazione).
Il resto è abbastanza semplice, si utilizzano gli stessi tipi di tutte le altre connessioni, a corredo dell’installazione è fornita un’accurata documentazione contenente anche degli esempi, insieme all’eseguibile dovremo distribuire anche il file MySql.Data.dll che si trova nella cartella di installazione (C:\Programmi\MySQL\MySQL Connector Net 5.2.5\Binaries\.NET 2.0).
Potete scaricare il sorgente di esempio per cominciare a fare degli esperimenti (si presuppone che abbiate prima installato il MySQL Connector).
Nota per gli utenti di Aruba
Alla data odierna, questo provider di servizi NON fornisce l’accesso ai database MySQL da applicazioni esterne ai loro server, il che significa che se acquistate un database MySQL da loro, potrete utilizzarlo unicamente dai domini ospitati sui loro server, e tutti i tentativi di connessione effettuati dal vostro pc o da altri siti, non andranno mai a buon fine. Si spera che in futuro tolgano questa assurda limitazione.
Download: [download#23]