Come interfacciarsi ad un database mysql da visual basic .NET

Giorno a tutti, in questo piccolo tutorial vedremo come creare una connessione a MySql in visual basic, alla fine inoltre vedremo come sarà possibile creare una piccola rubrica per numeri telefonici. La prima cosa da fare è scaricarsi mysql dal sito ufficiale, per questa guida scaricheremo mysql in formato zip (link qui). Un altra cosa di cui abbiamo bisogno è il connettore per .Net, senza questo connettore infatti non saranno installati i driver per la connessione a MySql. Il connettore lo possiamo trovare qui. In ultimo vi consiglio di scaricarvi HeidiSql che è un client open source creato da sviluppatori tedeschi che permette di visualizzare il database, crearne nuovi ed amministrare dati e tabelle, da precisare che lo useremo in questa guida per creare le tabelle e il database 🙂 . Adesso che abbiamo finito la lista dei file da scaricare possiamo iniziare.
Visto che il database l’ abbiamo scaricato sotto formato zip il servizio lo dovremo avviare manualmente. Estraete il file zip in una directory conosciuta, adesso creiamo un file di testo e incolliamoci questo codice dentro:

@echo off
cd bin
mysqld.exe

e salviamo il file con estenzione .bat nella cartella contenente tutti i file di MySql: Screen.
Doppio click su quel file e si aprirà una finestra DOS, probabilmente in xp se avete attivato il firewall vi chiedera se sbloccare o meno questo processo, clicchiamo su sblocca e il server mysql si avvierà.

Impostazione del database e creazione Tabelle.

Adesso apriamo HeidiSQL e facciamo click sul bottone new, diamo un nome alla connessione es: provaprova. Adesso sempre dalla schermata principale di heidisql modifichiamo l’ ip “127.0.0.1” nel campo hostname/ip. Siccome heidisql mette automaticamente il nome root nel campo username non dobbiamo modificare questo campo. Adesso clicchiamo su save e i nostri parametri saranno salvati:  Screen. Adesso nella schermata che si è aperta dobbiamo aggiungere un database e qualche tabella, vediamo come fare:
1. Tasto destro su root@127.0.0.1/ create new > Database;
2. Inseriamo il nome provaguida nel campo name e clicchiamo su OK.
Appena clicchiamo OK nella colonna di sinistra verrà automaticamente selezionato il database da noi creato. Adesso dobbiamo creare le tabelle, si fa così:
1. Clicchiamo sul nostro database e andiamo nel campo query
2. Inseriamo questo codice (da ora in poi lo chiameremo query) e premiamo il tasto F9 (Attenzione! il testo deve stare in una sola riga!):

CREATE TABLE `rubrica` (  `Nome` TEXT NOT NULL,  `Cognome` TEXT NOT NULL,
`Numero di telefono` TEXT NOT NULL );

Spieghiamo un po cosa fa questa query: Crea una tabella di nome rubrica con campi (‘nome‘ come testo non vuoto, ‘cognome’ come testo non vuoto, ‘numero di telefono‘ come testo non vuoto.

Passiamo finalmente al Visual Basic!

In questo secondo capitolo della guida creeremo una rubrica telefonica che salverà i nostri numeri di telefono nel database.
Creiamo un nuovo progetto e chiamiamolo Rubrica Mysql. Nel form principale inseriamo i seguenti elementi:
3 label
3 textbox
2 button
1 datagridview

e cerchiamo di disporli come è possibile vedere in questo Screen
Prima di

Public Class Form1

Inserite questa riga:

Imports System.Data.Odbc

Adesso fate doppio click sul bottone inserisci e aggiungete dentro il seguente codice:

Try 

Dim ipdatabase As String = “127.0.0.1” ‘ indirizzo ip database

Dim pswdatabase As String = “” ‘ password database

Dim iddatabase As String = “root” ‘ username database

Dim nomedatabase As String = “provaguida” ‘ nome database

Dim connectionString = “DRIVER={MySQL ODBC 3.51 Driver};SERVER=” & ipdatabase & “;DATABASE=” & nomedatabase & “;UID=” & iddatabase & “;PASSWORD=” & pswdatabase & “;OPTION=3”

Dim conn As New OdbcConnection(connectionString)

Dim nonqueryCommand As OdbcCommand = conn.CreateCommand()

conn.Open()

nonqueryCommand.CommandText = “INSERT INTO `rubrica` (`Nome`, `Cognome`, `Numero di telefono`) VALUES (‘” & TextBox1.Text & “‘, ‘” & TextBox2.Text & “‘, ‘” & TextBox3.Text & “‘);”

nonqueryCommand.ExecuteNonQuery()

MsgBox(“Contatto inserito”)

Catch errore_di_connessione As Odbc.OdbcException

MsgBox(“Non sono riuscito a connettermi perchè: ” + errore_di_connessione.Message)

Finally

End Try

Eseguiamo il codice ed inseriamo dei valori a caso per fare una prova:

Ed ecco il risultato visualizzato in HeidiSQL:

Bene, adesso che abbiamo creato la funzione per inserire i dati, vediamo la lettura e la visualizzazione in un Datagridview. Creiamo una nuova sub “chiamata ricavanumeri”

Private Sub ricavanumeri() 

End Sub

Dentro questa nuova sub inseriamo il seguente codice:

Try 

Dim ipdatabase As String = “127.0.0.1” ‘ indirizzo ip database

Dim pswdatabase As String = “” ‘ password database

Dim iddatabase As String = “root” ‘ username database

Dim nomedatabase As String = “provaguida” ‘ nome database

Dim cnString = “DRIVER={MySQL ODBC 3.51 Driver};SERVER=” & ipdatabase & “;DATABASE=” & nomedatabase & “;UID=” & iddatabase & “;PASSWORD=” & pswdatabase & “;OPTION=3”

Dim query As String

Dim conn As Common.DbConnection

conn = New OdbcConnection(cnString)

Dim MyConnection As New OdbcConnection(cnString)

Dim MyCommand As New OdbcCommand()

Dim da As Common.DbDataAdapter

Dim ds As DataSet = New DataSet

Dim nonqueryCommand As OdbcCommand = conn.CreateCommand()

conn.Open()

query = “SELECT `Nome`, `Cognome`, `Numero di telefono` FROM `provaguida`.`rubrica` LIMIT 0, 1000;” ‘la query per ricavare i dati dal database

da = New OdbcDataAdapter(query, conn)

Dim cb As OdbcCommandBuilder = New OdbcCommandBuilder(da)

da.Fill(ds, “dati”)

DataGridView1.DataSource = ds ‘nomedatagridview.datasource = ds

DataGridView1.DataMember = “dati” ‘nomedatagridview.DataMember = “dati”

Catch ex As Common.DbException

MsgBox(ex.ToString)

Finally

End Try

Ok. Adesso andiamo nella finestra di progettazione, facciamo doppio click sul form 1 ed inseriamo nel formload il seguente richiamo alla funzione “ricavanumeri”:

ricavanumeri()

La stessa stringa la inseriamo anche nell’ evento click del bottone inserisci.

In questo modo avremo l’ aggiornamento automatico del datagridview non appena verrà inserito un contatto o aperta la schermata principale.

Ritorniamo nella finestra di progettazione e facciamo doppio click sul bottone “Aggiorna” ed inseriamo di nuovo il richiamo alla funzione per aggiornare il datagridview:

ricavanumeri()

Bene, adesso dobbiamo vedere come si fa ad eliminare un record dal database. Il codice è simile a quello dell’ inserimento. Procediamo.

Doppio click sul bottone elimina ed inseriamo il codice:

Dim ricavanome As String = DataGridView1.SelectedCells.Item(0).Value ‘ricava il nome della riga selezionata 

Dim ricavacognome As String = DataGridView1.SelectedCells.Item(1).Value ‘ricava il cognome ”

Dim ricavanumtel As String = DataGridView1.SelectedCells.Item(2).Value ‘ricava il num di tel ”

Try

Dim ipdatabase As String = “127.0.0.1” ‘ indirizzo ip database

Dim pswdatabase As String = “” ‘ password database

Dim iddatabase As String = “root” ‘ username database

Dim nomedatabase As String = “provaguida” ‘ nome database

Dim connectionString = “DRIVER={MySQL ODBC 3.51 Driver};SERVER=” & ipdatabase & “;DATABASE=” & nomedatabase & “;UID=” & iddatabase & “;PASSWORD=” & pswdatabase & “;OPTION=3”

Dim conn As New OdbcConnection(connectionString)

Dim nonqueryCommand As OdbcCommand = conn.CreateCommand()

conn.Open()

nonqueryCommand.CommandText = “DELETE FROM `rubrica` WHERE (`Nome`='” & ricavanome & “‘ AND `Cognome`='” & ricavacognome & “‘ AND `Numero di telefono`='” & ricavanumtel & “‘) LIMIT 1;”

nonqueryCommand.ExecuteNonQuery()

MsgBox(“Contatto eliminato”)

Catch errore_di_connessione As Odbc.OdbcException

MsgBox(“Non sono riuscito a connettermi perchè: ” + errore_di_connessione.Message)

Finally

End Try

ricavanumeri()

Da notare che abbiamo aggiunto anche il refresh del datagridview subito dopo la modifica.

Eccoci alla fine, è stato difficile? Per aiuti o spiegazioni mandate un commento J.

Bye bye

BlackWolf96

Annunci

20 risposte a “Come interfacciarsi ad un database mysql da visual basic .NET

  1. come al solito i pasticci li combino solo io.
    ricevo un’eccezione quando tento di connettermi al database. Non so perchè!!!
    Riporto qui il messaggio:
    “ERROR[IM002][Microsoft][Driver Manager ODBC] Nome origine dati non trovato e driver predefinito non trovato”

    Come posso fare??

  2. Quando clicco su HeidiSQL su Open mi esce SQL error (1045): Access denied for user ‘root’@localhost’ (using password: NO)

    Cosa faccio?

  3. Gianluca :

    Ho sempre degli errori ma l’ip deve essere 127.0.0.1 e root?

    root@localost ? mi esce fuori così in alcune scritte rispondi grazie

    L’ip deve essere localhost o 127.0.0.1, e l’user generalmente è root.

  4. Pure io ricevo questo errore: ERROR[IM002][Microsoft][Driver Manager ODBC] Nome origine dati non trovato e driver predefinito non trovato
    Ho installato l’odbc connector, ma da errore comunque, cosa posso fare?

  5. Io riscontro questo errore quando metto nel campo “Numero di telefono” il testo “Numero”: ERROR [42S22] [MySQL][ODBC 5.1 Driver][mysqld-5.5.17]Unknown column “Nome” in ‘field list’. Invece se scrivo “Numero di telefono” nel campo “Numero di telefono” mi da quest’errore: ERROR [42000] [MySQL][ODBC 5.1 Driver][mysqld-5.5.17]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘di telefono’)’ at line 1.
    Vorrei però aggiungere che sia di MySQL che di HeidiSQL ho versioni più recenti rispetto a quelle che vengono usate nella guida.

    • Come hai detto tu, ho inserito questa query su un unico rigo:

      CREATE TABLE `rubrica` ( `Nome` TEXT NOT NULL, `Cognome` TEXT NOT NULL,`Numero di telefono` TEXT NOT NULL );

      Però non va xD

  6. ciao
    ho provato il tuo codice e mi salta fuori questo errore
    “non sono riuscito a connettermi perche: ERROR [im002][microsoft][driver manager odbc] nome origine dati non trovato e driver predefinito non specifico.

    …..una cosa io sto testando il programma su un databare su un server remoto e non in locale..

    aspetto tue notizie ciao

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...