MySQL Abfrage in Textbox

    • VB.NET

    Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von LaMa5.

      MySQL Abfrage in Textbox


      Also..
      Aufgrund mehrerer Anfragen (In Foren & via ICQ) habe ich mir gedacht einfach mal ein kleines Tutorial zum Thema “Abfrage einer MySQL Datenbank” zu schreiben welches hier zu finden ist.
      Fangen wir an..
      Wir brauchen:
      1. Visual Basic 2008 (Express oder sonstige)
      2. Eine MySQL Datenbank (Externe Zugriffe müssen gestattet sein)
      3. MySQL Connector für .Net (DOWNLOAD)
      4. 10 Minuten Zeit :D
      Zu allererst erstellen wir eine neue Windows Forms Anwendung.
      In die eben erstelle Form1 packen wir nun folgendes rein:
      • 2x Buttons
      • 2x Textboxen (txt_name & txt_nachname)
      • 2x Label (Zum Beschriften der Textboxen)
      • 1x Verweis auf MySql.Data.dll & MySql.Web.dll
      Ganz wichtig ist dass wir diesen Code zum Importieren der DLL in die erste Zeile schreiben:

      VB.NET-Quellcode

      1. Imports MySql.Data.MySqlClient


      Fangen wir an mit dem Code für Button1 (Get):

      VB.NET-Quellcode

      1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      2. Dim conn As MySqlConnection
      3. conn = New MySqlConnection
      4. conn.ConnectionString = "server=SERVERNAME/HOST;" & "user id=USERNAME;" & "password=PASSWORT;" & "database=DBNAME"
      5. Dim name As String = (txt_name.Text)
      6. Dim nachname As String = (txt_nachname.Text)
      7. Dim myAdapter As New MySqlDataAdapter
      8. Dim SQLAbfrage As String = "SELECT * FROM benutzer WHERE Name='" + Replace(name, " ", "") + "' AND Nachname='" & Replace(nachname, " ", "") & "'"
      9. Dim myCommand As New MySqlCommand
      10. myCommand.Connection = conn
      11. myCommand.CommandText = SQLAbfrage
      12. txt_name.Text = SQLAbfrage("SELECT * FROM benutzer WHERE Name")
      13. txt_nachname.Text = SQLAbfrage("SELECT * FROM benutzer WHERE Nachname")
      14. myAdapter.SelectCommand = myCommand
      15. Dim myData As MySqlDataReader
      16. myData = myCommand.ExecuteReader()
      17. If myData.HasRows Then
      18. conn.Close()
      19. conn.Open()
      20. Else
      21. 'Nichts
      22. End If
      23. End Sub





      Mit dem oberen Code holen wir die Daten aus der Datenbank in die Textboxen.
      Kommen wir nun zu Button2 (Post):

      VB.NET-Quellcode

      1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
      2. Dim conn As MySqlConnection
      3. conn = New MySqlConnection
      4. conn.ConnectionString = "server=SERVERNAME/HOST;" & "user id=USERNAME;" & "password=PASSWORT;" & "database=DBNAME"
      5. Try
      6. conn.Open()
      7. Catch myerror As MySqlException
      8. 'Nichts
      9. End Try
      10. Dim myAdapter As New MySqlDataAdapter
      11. Dim SQLAbfrage As String = "SELECT * FROM benutzer WHERE Name='" + txt_name.Text + "'"
      12. Dim myCommand As New MySqlCommand
      13. myCommand.Connection = conn
      14. myCommand.CommandText = SQLAbfrage
      15. myAdapter.SelectCommand = myCommand
      16. Dim myData As MySqlDataReader
      17. myData = myCommand.ExecuteReader()
      18. If myData.HasRows = 0 Then
      19. conn.Close()
      20. conn.Open()
      21. Dim registerfinal As New MySqlDataAdapter
      22. Dim name As String = (txt_name.Text)
      23. Dim nachname As String = (txt_nachname.Text)
      24. myCommand.CommandText = "INSERT INTO benutzer(Name, Nachname)" _
      25. & "VALUES('" & name & "','" & nachname & "')"
      26. myCommand.ExecuteNonQuery()
      27. conn.Close()
      28. Else
      29. 'Nichts
      30. End If
      31. End Sub



      Das ganze müsste jetzt in der Form so aussehen:




      Nun brauchen wir natürlich noch um überhaupt Daten lesen oder schreiben zu können die Tabelle in der Datenbank.
      Diese Tabelle nennt sich “benutzer” (ohne ” “).
      Um diese Tabelle zu erstellen gehen wir einfach (falls vorhanden) in PhpMyAdmin und geben folgenden Code in den Reiter SQL ein:

      SQL-Abfrage

      1. DROP TABLE IF EXISTS `benutzer`;CREATE TABLE `benutzer` (
      2. `ID` int(5) NOT NULL auto_increment,
      3. `Name` varchar(255) default NULL,
      4. `Nachname` varchar(255) default NULL,
      5. PRIMARY KEY (`ID`)
      6. ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin


      Ich hoffe ich konnte mit diesem Tutorial weiterhelfen ;)
      Das Beispielprojekt kann HIER herruntergeladen werden.

      NACHTRAG: md5
      Um die Datensätze verschlüsselt abzuspeichern, einfach nur folgenden Code in ein Modul namens "md5" schreiben:

      VB.NET-Quellcode

      1. Imports System.Security.Cryptography
      2. Imports System.Text
      3. Module md5
      4. Public Function MD5StringHash(ByVal strString As String) As String
      5. Dim MD5 As New MD5CryptoServiceProvider
      6. Dim Data As Byte()
      7. Dim Result As Byte()
      8. Dim Res As String = ""
      9. Dim Tmp As String = ""
      10. Data = Encoding.ASCII.GetBytes(strString)
      11. Result = MD5.ComputeHash(Data)
      12. For i As Integer = 0 To Result.Length - 1
      13. Tmp = Hex(Result(i))
      14. If Len(Tmp) = 1 Then Tmp = "0" & Tmp
      15. Res += Tmp
      16. Next
      17. Return Res
      18. End Function
      19. End Module


      Dann diesen Code einfach einbinden:

      VB.NET-Quellcode

      1. Dim name As String = MD5StringHash(txt_name.Text)
      2. Dim nachname As String = MD5StringHash(txt_nachname.Text)

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „r3mote“ ()

      Ich find diese MD5 Methode kompakter:

      VB.NET-Quellcode

      1. Function Md5(ByVal strHash As String) As String
      2. Dim md5obj As New Security.Cryptography.MD5CryptoServiceProvider
      3. Dim bytestohash() As Byte = System.Text.Encoding.ASCII.GetBytes(strHash)
      4. bytestohash = md5obj.ComputeHash(bytestohash)
      5. Dim strresult As String = ""
      6. For Each b As Byte In bytestohash
      7. strresult += b.ToString("x2")
      8. Next
      9. Return strresult
      10. End Function


      Da dies ohne irgendwelche Imports funktioniert

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „St0on“ ()

      Ich habe mir das Tutorial durchgelesen weil ich auch auf eine MySQL Datenbank zugreifen will, allerdings haben mich die Comments abgeschreckt.
      Ich arbeite mit VB 2010. Ist es wirklich möglich, diese .exe Dateien zu dekompilieren und man könnte Username und Passwort auslesen?
      Ich habe gegoogelt wegen decompilern aber finde lediglich welche für VB06 abwärts. Ist da was verbessert worden seit VB08?
      Weil das Sicherheitsrisiko würde mich zutiefst von VB enttäuschen, das hatte ich von einer Scriptsprache wie dieser nicht erwartet.

      Edit: Ich versuche gerade das Tut zum Laufen zu kriegen und muss sagen die Dokumentation zu den einzelnen Befehlen und Zeilen ist knapp, bis nicht vorhanden, leider.
      Es ist hier wesentlich ausführlicher erklärt, und das ist lediglich ne Antwort zu ner Frage.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Alex“ ()

      .Net Reactor wäre eine Variante dafür ;)

      Außerdem handelt es sich bei VB nicht um eine Scriptsprache sondern um eine Programmiersprache..
      Scriptsprachen währen z.B. Perl oder Python.

      Man kann das ganze über ein PHP-Script natürlich etwas sicherer gestalten.
      Okay danke für die Aufklärung.
      Wenn es mit .Net Reactor sicher wird wäre eine Verlinkung im Tut passend dazu, denn ich denke es passt gut zur Thematik.
      Weiterhin fände ich eine schrittweise Erklärung der einzelnen Befehle sinnvoll, denn die Tut´s sollen ja dazu dienen den Lesern einen Lernfaktor zu bieten.
      Ich habe es jetzt zum Laufen bekommen allerdings nur in Kombination mit dem von mir (zuletzt) geposteten Link, denn da war die Dokumentation sehr ausführlich und hilfreich.

      Ach und der Tip für die Implementierung von Netconnect in VB (Projekt-Verweis hinzufügen...) wäre auch sehr hilfreich gewesen.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Alex“ ()

      Ich glaube du hast da was falsch verstanden.. Mit dem .Net Reactor kann man Quellcode lesen und ihn nicht sicherer machen ;)
      Deshalb am besten das Programm auf ein PHP-Script zugreifen lassen und dann via Script auf die DB zugreifen lassen..
      @Alex:
      Ich arbeite mit VB 2010. Ist es wirklich möglich, diese .exe Dateien zu dekompilieren und man könnte Username und Passwort auslesen?
      Wenn du weiter gesucht hättest, wärst du auf ein anderes Tutorial gestoßen.
      Da ist das Passwort- und Benutzernamenauslesen nicht so ohne weiteres möglich.
      [VB.NET] Verbindung zu einer MySQL-Datenbank via PHP-Skript

      Ist zwar etwas mehr Arbeit, aber auch sicherer.
      wintoolz.de
      • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
      • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
      • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

      Benutze auch du Ecosia

      Ungültige Konvertierung

      Hallo,

      erstmal sorry, dass ich so einen "alten" Beitrag wieder auspacke.
      Aber bei mir funktioniert der Tipp leider nicht.
      Wenn ich mir die Daten holen will, bekomme ich immer folgenden Fehler:
      Ungültige Konvertierung von der Zeichenfolge SELECT * FROM benutzer WHERE Nam in Typ Integer.

      Betrifft die Zeile:

      VB.NET-Quellcode

      1. txt_Name.Text = SQLAbfrage("SELECT * FROM benutzer WHERE Name")


      Datenbank ist erstellt, Verweis ist auch wie beschrieben hinzugefügt.
      Könnt ihr mir helfen?

      Danke im Voraus!

      PS: Post funktioniert einwandfrei!

      Tolapai schrieb:

      Hallo,

      erstmal sorry, dass ich so einen "alten" Beitrag wieder auspacke.
      Aber bei mir funktioniert der Tipp leider nicht.
      Wenn ich mir die Daten holen will, bekomme ich immer folgenden Fehler:
      Ungültige Konvertierung von der Zeichenfolge SELECT * FROM benutzer WHERE Nam in Typ Integer.

      Betrifft die Zeile:

      VB.NET-Quellcode

      1. txt_Name.Text = SQLAbfrage("SELECT * FROM benutzer WHERE Name")


      Datenbank ist erstellt, Verweis ist auch wie beschrieben hinzugefügt.
      Könnt ihr mir helfen?

      Danke im Voraus!

      PS: Post funktioniert einwandfrei!
      Hallo, ich bekomme den gleichen Fehler.
      Könnte bitte jemand von euch helfen?

      mfg
      Sebastian

      SQL-Abfrage

      1. Fehler
      2. SQL-Befehl: CREATE TABLE `benutzer` ( `ID` int( 5 ) NOT NULL AUTO_INCREMENT ,
      3. `Name` varchar( 255 ) default NULL ,
      4. `Nachname` varchar( 255 ) default NULL ,
      5. PRIMARY KEY ( `ID` ) ) ENGINE = MYISAM AUTO_INCREMENT =9 DEFAULT CHARSET = latin MySQL meldet: #1115 - Unknown character set: 'latin'


      Gibt es eine alternative?
      Hi,

      1.) Wie wär's mal mit einer VERNÜNFTIGEN Beitragsformatierung?? Ich musste mir das mehrfach ansehen, um überhaupt einen Sinn in Deinen Beitrag hineinzuinterpretieren.

      2.) Eine einfache Googlesuche bringt das Ergebnis (Suchworte: mysql character set) --> Erster Treffer!
      Und damit's nicht zu kompliziert wird: klick mich

      BTW: hiermit kann man sich die Liste an der MySQL-Konsole aufrufen

      SQL-Abfrage

      1. SHOW CHARACTER SET;



      bye ...

      LaMa5.
      Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
      (Autor: Earl Wilson, amerik. Schriftsteller)

      https://www.serviceteam-md.de