olipro
Goto Top

Visual Basic Express 2008 an MySQL-Datenbank konnektieren

Visual Basic Express 2008
MySQL-Server 5.0 WIN

In meiner Verzweiflung muss ich jetzt doch einmal den Rat der Gemeinde suchen.

Was möchte ich:
Meinen VB-Code mit Daten einer MySQL-Tabelle füttern.

Was habe ich bereits getan:
Connector installiert http://dev.mysql.com/downloads/connector/net/5.2.html
Im Datenbank-Explorer versucht, die Verbindung einzurichten

Ein paar Tipps, die ich noch gefunden habe,
aber leider nicht zurecht kommen oder die nicht funktionieren:
Connection String: "Data Source=myServer;Database=myDB;User ID=myUser;Password=myPass"
MySQL Connection: MySql.Data.MySqlClient.MySqlConnection
MySQL Command: MySql.Data.MySqlClient.MySqlCommand

Meine Frage:
Ist es überhaupt möglich in der Express-Edition 2008 eine MySQL-Datenbank einzubinden?
Wenn ja, kann mir jemand ein paar Tipps, Links oder Beispielcode geben?

Gruß, Oliver

Content-ID: 90766

Url: https://administrator.de/contentid/90766

Ausgedruckt am: 26.11.2024 um 04:11 Uhr

56153
56153 27.06.2008 um 10:48:20 Uhr
Goto Top
hi,

also erstmal im projekt-explorer mit rechts auf verweise -> 'verweis hinzufügen' klicken. dann über das 'browse' feld zum installationspfad durchklicken (c:\Programme\MySQL\MySQL Connector Net\Binaries\.NET 2.0) und die MySql.Data.dll auswählen.

Okay, damit ist die dll referenziert und kann benutzt werden.

Jetzt zum Code:

Die folgenden Import-Statements kannst du vor jede Klasse setzen, in der du die MySql Verbindung nutzen willst. Das erspart etwas Tipp-Arbeit ;)

Imports MySql.Data.MySqlClient
Imports MySql.Data.Types

Zur Verbindung wird folgender ConnectionString benötigt:

Dim strConn As String = "Persist Security Info=False;database=(DATENBANKNAME);server=(SERVERNAME);user id=(BENUTZER);Password=(PASSWORT);charset=latin1"  

Die Felder (DATENBANKNAME), (SERVERNAME), (BENUTZER) und (PASSWORT) müssen natürlich von dir noch mit den entsprechenden Werten gefüllt werden face-smile

Folgende 2 Objekte werden auf jeden Fall benötigt:

'stellt die Verbindung mit der Datenbank zur Verfügung  
Dim objMySQL as MySqlConnection
'erlaubt das Ausführen von SQL-Statements  
Dim objCommand as MySqlCommand

So, das waren die Vorbereitungen.
Um die Datenbankverbindung nun zu öffnen, erstellst du eine neue Instanz des Connection-Objekts und übergibst diesem den Connectionstring

objMySQL = New MySqlConnection(strConn)
objMySQL.Open

Um die Verbindung wieder zu schließen, reicht ein Aufruf der Close-Methode und das anschließende Bereinigen der Variable:

objMySQL.Close
objMySQL = Nothing

Ab jetzt wird es interessant (und auch kompliziert, deswegen beschränke ich mich auf deine Aufgabenvorlage)

Um Daten aus einer SQL-Datenbank abzurufen, wird natürlich ein SQL-String benötigt.

Dim strSQL as string = "SELECT (FELDER) FROM (TABELLE)"  

Wobei (FELDER) für eine Auflistung aller benötigten Spalten und (TABELLE) für den Tabellennamen steht.

Dieser SQL-String wird an das Command-Objekt übergeben, zusammen mit dem Objekt für die Datenbankverbindung

objCommand = New MySqlCommand(strSQL, objMySql)

Zusätzlich wird ein Objekt benötigt, das uns die ausgelesenen Daten zur Verfügung stellt. Am einfachsten
ist dies mit einem SQLDataReader-Objekt zu bewerkstelligen, dem die Ergebnisse des Command-Objekts übergeben werden

Dim objReader as MySqlDataReader
objReader = objCommand.ExecuteQuery

Durch die Ergebnisse kann nun mit einer Do...Loop Schleife iteriert werden

Do Until objReader.Read = False
dim strFeld1 as string = objReader!Feld1
dim strFeld2 as string = objReader!Feld2
msgbox strFeld1 & ":" & strFeld2  
Loop

Wobei hier Feld1, Feld2 etc für die Namen der Spalten, wie im SQL-String angegeben steht.

Danach wird auch der SqlDataReader wieder geschlossen

objReader.Close
objReader = Nothing

Okay, das war die Theorie face-smile

Jetzt nochmal ein zusammenfassendes Beispiel:

Wir möchten die Felder 'KundenName', 'Strasse' und 'Ort' aus der Tabelle 'Kunden' in der Datenbank 'tblKundendaten' auf
dem Server 'srv-wawi' auslesen und in einer MsgBox ausgeben. Das ganze wird über die Prozedur 'LeseKundenDaten' in
der Klasse 'KundenLeser' bewerkstelligt.

Off we go ...

Imports MySql.Data.MySqlClient
Imports MySql.Data.Types

Public Class KundenLeser

Public Sub LeseKundenDaten()

'stellt die Verbindung mit der Datenbank zur Verfügung  
Dim objMySQL as MySqlConnection

'erlaubt das Ausführen von SQL-Statements  
Dim objCommand as MySqlCommand

'datareader  
Dim objReader as MySqlDataReader

'connection-string  
Dim strConn As String = "Persist Security Info=False;database=tblKundendaten;server=srv-wawi;user id=sqluser;Password=12345;charset=latin1"  

'sql-statement  
Dim strSQL as string = "SELECT Kundenname, Strasse, Ort FROM Kunden"  

'dieser String enthält nachher die Kundendaten, ein Datensatz pro Zeile  
dim strResult as string = ""  

'datenbankverbindung aufbauen  
objMySQL = New MySqlConnection(strConn)
objMySQL.Open

'command-objekt vorbereiten und an den Reader übergeben  
objCommand = New MySqlCommand(strSQL, objMySql)
objReader = objCommand.ExecuteQuery

'ergebnisse auslesen und in string speichern  
Do Until objReader.Read = False
dim strName as string = objReader!KundenName
dim strStrasse as string = objReader!Strasse
dim strOrt as string = objReader!Ort
strResult &= strName & ", " & strStrasse & ", " & strOrt & vbcrlf  
Loop

'Datenbankverbindungen schließen und bereinigen  
objReader.close
objMySQL.Close

objReader = Nothing
objCommand = Nothing
objMySQL = Nothing

'ergebniss anzeigen  
MsgBox strResult, vbokonly, "SQL Ergebniss"  

End Sub

End Class
ketchup73
ketchup73 29.01.2009 um 12:25:22 Uhr
Goto Top
Hallo
bin neu in der Materie
Hab das Script mal ausprobiert und bekomme folgenden Fehler:

Fehler 2 "ExecuteQuery" ist kein Member von "MySql.Data.MySqlClient.MySqlCommand". J:\vb programmierung plus\vb\mysqlconnectiontest\mysqlconnectiontest\Form1.vb 32 21 mysqlconnectiontest


Kann mir einer sagen was ich falsch mache ? hat vielleicht jemand ein einfaches Script für mich das einfach 3 Werte ( Vorname, Nachname , Titel ) aus einer MYSQL DB ( test) mit der Tabelle ( namen ) ausliest und mir in 3 Spalten ausgibt. Mir wäre damit wahnsinnig geholfen.
Danke schon mal
Alex-Cam
Alex-Cam 12.06.2010 um 20:31:20 Uhr
Goto Top
Super Erklärung. Tutorial reif! Damit habe es sogar ich verstanden! Top!