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

Leggere e scrivere file INI con visual basic .NET

Un file ini è un formato di teso virtuale che serve per salvare le impostazioni di un programma senza usare database e dintorni. Adesso vi mostrerò come usare questo formato di file per salvare delle impostazioni con un programma in visual basic.

Mettete queste righe subito dopo l’ apertura della classe.

Private Declare Auto Function GetPrivateProfileString Lib “kernel32.dll” (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Integer, ByVal lpFileName As String) As Integer

Private Declare Auto Function WritePrivateProfileString Lib “kernel32.dll” (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Integer

Friend Function IniRead(ByVal Filename As String, ByVal Section As String, ByVal Key As String, Optional ByVal lpDefault As String = “”, Optional ByVal bRaiseError As Boolean = False) As String

Dim RetVal As String = New String(” “, 255)

Dim LenResult As Integer

Dim ErrString As String

LenResult = GetPrivateProfileString(Section, Key, lpDefault, RetVal, RetVal.Length, Filename)

If LenResult = 0 AndAlso bRaiseError Then

If Not (System.IO.File.Exists(Filename)) Then

ErrString = “Impossibile aprire il file INI” & Filename

Else

ErrString = “La sezione o la chiave sono errate oppure l’accesso al file non è consentito”

End If

Throw New Exception(ErrString)

End If

Return RetVal.Substring(0, LenResult)

End Function

Friend Function IniWrite(ByVal Filename As String, ByVal Section As String, ByVal Key As String, ByVal Value As String, Optional ByVal bRaiseError As Boolean = False) As Boolean

Dim LenResult As Integer

Dim ErrString As String

LenResult = WritePrivateProfileString(Section, Key, Value, Filename)

If LenResult = 0 And bRaiseError Then

If Not (System.IO.File.Exists(Filename)) Then

ErrString = “Impossibile aprire il file INI” & Filename

Else

ErrString = “Accesso al file non consentito”

End If

Throw New Exception(ErrString)

End If

Return IIf(LenResult = 0, False, True)

End

End Function

Ok, vediamo come utilizzarle.

Per scrivere dentro un file ini usiamo:

IniWrite(“fileini.ini”, “sezione”, “chiave”, “valore”)

Il risultato di questa funzione sarà un file ini chiamato “fileini.ini” (senza virgole) contenente il seguente testo:

[sezione]

chiave=valore

Adesso per leggere il contenuto di un file ini e passarlo ad una variabile facciamo così:

dim lettura as string

lettura = IniRead(“fileini.ini”, “sezione”, “chiave”)

msgbox(lettura)

Ecco. Appena finito di eseguire questo codice vi verrà stampato un msg box contenente il valore di quella specifica chiave.

Il seguente codice è valido per Visual Basic 2005, 2008, 2010 (testato con tutti e tre)

Non esitate a commentare se non vi è chiaro qualcosa.

Al prossimo articolo 😛

By blackwolf96

News

E’ un po di tempo che non scrivo sl blog, ma mi dovete scusare xke ho avuto da fare con un programma in VB 2010.

Vi informo che sto testando una scheda realizzata per eccitare 7 relé tramite la porta usb di un qualsiasi pc con un pic 18F2550. Appena finirò di fare questi test, scriverò un articolo sul blog che spieghi passo-passo come realizzare una connessione usb hid con un pic.

HoLa!

Videoguida, come creare una dll da injectare vc++

Videoguida, come creare una dllda injectare in visual c++:

i sorgenti li troverete qui:  Link

Per informazioni più dettagliate visitate anke il mio sito