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: Test connessione Mysql da VB.NET (1187)
Articoli che potrebbero interessarti
Se desiderate che settorezero continui a rimanere gratuito e fruibile da tutti, non copiate il nostro materiale e segnalateci se qualcuno lo fa

Questo sito e tutto il suo contenuto sono distribuiti sotto la licenza








#1 da Gianni il 1 maggio 2009
Un problema. Ho scaricato i driver connector, ma all’aggiunta del riferimento non riesco a trovare la benedetta dll MySQL.Data… dove sta? Grazie.
#2 da Gianni il 2 maggio 2009
x Gianni
E’ strano che dopo l’installazione dei connector, non te li ritrovi nella finestra “Aggiungi riferimento” (non li avrai mica installati tenendo l’editor VB aperto?). Puoi sempre provare a referenziarli a mano scegliendo la scheda “Sfoglia” nella finestra “Aggiugi riferimento”. Cerchi il file MySql.Data.dll nella cartella C:\Programmi\MySQL\MySQL Connector Net 5.2.5\Binaries\.NET 2.0. Cosi deve funzionare ugualmente, se non ti ritrovi il file MySql.Data.dll allora c’è qualcosa che non va nell’installazione… Scaricalo daccapo
#3 da sandro pucci il 25 agosto 2009
premesso che non sono assolutamente un informatico, ho comunque
realizzato una appicazione discretamente complessa in vb6 con database access via ado. Sto cercando di aggiornarmi con .net, ho provato la tua soluzione di connessione a mysql con vb.net, ho però utilizzato sharpdevelop ma ricevo il seguente errore all’apertura “errore loading c:\dovesitrovalacartella : progetto importato da ‘c:\microsoft.visualbasic.targetes’ non trovato verificare che il percorso della dichiarazione — sia corretto e che il file sia sul disco. cartelladovesitrovail progetto”. Se mi risolvi la situazione, per la donazione sono disponibile anche ad una pizza “margherita” . Grazie comunque.
#4 da Gianni il 25 agosto 2009
Non uso sharpdevelop, per cui adesso su due piedi non ti saprei dire… Ora lo scarico, lo installo, faccio qualche prova e ti faccio sapere
#5 da Gianni il 28 agosto 2009
Per Sandro Pucci:
Ho installato sharp develop e il mysql connect. mi funziona tutto.
Innanzitutto verifica queste cose:
1- il mio progetto è stato sviluppato con i driver di mysql versione 5.2, l’ultima versione disponibile adesso dei driver è la 6.2., scarica la versione 6.2, esegui l’installazione, da sharp develop apri il progetto e aggiungi il riferimento a mysql.data.dll (se avvii il progetto cosi come sta, cercherà i driver 5.2 e ovviamente non li troverà se hai installato una versione differente)
2 – assicurati di copiare il file mysql.data.dll nella cartella debug ( o release, dipende in che modalità lavori)
fammi sapere
#6 da giodepa il 27 maggio 2011
complimenti per l’articolo
Avrei bisogno del tuo aiuto…..
Volevo creare un DB con VB.net partendo da un file txt. Di solito per fare questo ho sempre utilizzato OLEDB passandogli un file excel. In questo caso pero’ ho a che fare con un file che 44000 colonne e 1420 righe.
Come posso fare?