Login Problem

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Wolfman.

    Login Problem

    Ich hab ein Problem mit dem Login, statt das nächste Menü zu öffnen bringt er mir immer wieder die Fehlermeldung der MsgBox

    VB.NET-Quellcode

    1. Imports MySql.Data.MySqlClient
    2. Public Class Login Private Sub Login1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Login1.Click Dim cn As New MySqlConnection Dim cmd As New MySqlCommand Dim dr As MySqlDataReader
    3. cn.ConnectionString = "Server = 127.0.0.1; user id = root; password = 123456; database = network-ufp" cmd.Connection = cn cn.Open() cmd.CommandText = "SELECT username,password FROM wcf1_user WHERE username = '" & txtusername.Text & "' and password = '" & txtpassword.Text & "'" dr = cmd.ExecuteReader
    4. If dr.HasRows Then Hauptmenü.Show() Me.Visible = False Else MsgBox("Invalid Username or Password") End If
    5. End Sub
    6. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Abbrechen1.Click Me.Close() End SubEndClass



    Edit by ErfinderDesRades: bitte richtiges UnterForum wählen

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

    Bitte füge Deinen QuellCode richtig formatiert ein. So kann man das leider unmöglich lesen.

    vb-paradise.de/board/boarddisk…en-was-ist-damit-gemeint/
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    danke für den Link, wusste nicht das der buggy ist

    VB.NET-Quellcode

    1. Imports MySql.Data.MySqlClient
    2. Public Class Login
    3. Private Sub Login1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Login1.Click
    4. Dim cn As New MySqlConnection
    5. Dim cmd As New MySqlCommand
    6. Dim dr As MySqlDataReader
    7. cn.ConnectionString = "Server = 127.0.0.1; user id = root; password = 123456; database = network-ufp"
    8. cmd.Connection = cn
    9. cn.Open()
    10. cmd.CommandText = "SELECT username,password FROM wcf1_user WHERE username = '" & txtusername.Text & "' and password = '" & txtpassword.Text & "'"
    11. dr = cmd.ExecuteReader
    12. If dr.HasRows Then
    13. Hauptmenü.Show()
    14. Me.Visible = False
    15. Else
    16. MsgBox("Invalid Username or Password")
    17. End If
    18. End Sub
    19. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Abbrechen1.Click
    20. Me.Close()
    21. End Sub
    22. End Class
    Also wenn der Verbindungsaufbau korrekt abläuft, kanns eigentlich nur am SQL Query liegen. Also username, passwort oder etwas anderes falsch.
    Vielleicht setzt du dir das ganze mal in einen try-catch block um zu sehen ob die Verbindung überhaupt aufgebaut wird und was sich sonst so tut.

    Und ich hoffe du weißt dass in der password Spalte nicht das Passwort im Klartext steht sondern als salted SHA1 Hash.
    Laut table Name geh ich jedenfalls mal von wbb3 aus.

    VB.NET-Quellcode

    1. Private Sub btnlogin_Click(sender As System.Object, e As System.EventArgs) Handles btnlogin.Click
    2. 'Erstellunge der Verbindung zur Datenbank
    3. Dim cn= New MySqlConnection
    4. cn.ConnectionString = "Server = 127.0.0.1; user id = root; password = 123456; database = network-ufp"
    5. cn.Open()
    6. Dim mysqladapter As New MySqlDataAdapter
    7. 'Festlegen des Command-Textes (Befehl führt aus: Es sollen alle Reihen markiert werden, die den eingegebenen Benutzernamen und das eingebene Passwort beinhalten)
    8. Dim sqlsquery As String = "SELECT * FROM wcf1_user WHERE username= '" & txtusername.Text & "' AND password = '" & txtpassword.Text & "';"
    9. 'Ausführen des Kommandos
    10. Dim cmd As New MySqlCommand
    11. cmd.Connection = cn
    12. cmd.CommandText = sqlsquery
    13. mysqladapter.SelectCommand = cmd
    14. 'Überprüfen ob Zeilen selektiert sind
    15. Dim dr As MySqlDataReader
    16. dr = cmd.ExecuteReader
    17. If reader.HasRows = True Then
    18. MessageBox.Show("Falsche Eingabe!")
    19. Else
    20. MessageBox.Show("Willkommen " & txtusername & "!")
    21. Dim Form2 As New Form2
    22. Form2.ShowDialog()
    23. Dim Form1 As New Form1
    24. Form1.Hide()
    25. End If
    26. End Sub

    @Wolfman probier einmal diesen Code. Funktioniert bei mir einbandfrei. Falls bei dir jetzt wieder Probleme auftreten sollten, liegt es vermutlich an der Verbindung.

    Gruß
    Switcherlapp97
    RubiksCubeSolver


    Jetzt im Showroom
    @Cane: Genau ohneTry-Catch Block würde er den Fehler sehen wenn die Verbindung nicht funktioniert. Dann tritt nämlich eine Exception auf.

    @Wolfman: Die MessageBox von dir hat nichts damit zu tun ob die Verbindung erfolgreich war oder nicht. Dein select gibt einfach keine Daten zurück.
    Du verwendest ja dir Abfrage .HasRows. Wenn hier keine Zeilen retour kommen komsmte in den Else Zweig.
    Verwende bei solchen Abfragen immer DB-Parameter [VB.NET] Tipp & Trick: DbParameter

    Ändere den Code mal dahingehend, denke das sollte dein Problem lösen.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    @Wolfman Ich wollte den Code mit deinen Variablen-Namen schreiben und habe einmal vergessen den alten Namen zu verändern

    VB.NET-Quellcode

    1. 'Zuvor If reader.HasRows = True Then
    2. If dr.HasRows = True Then

    Der zweite Fehler kommt, weil ich bei der Willkommens-Nachricht statt txtusername.Text nur txtusername geschrieben habe.

    Gruß
    Switcherlapp97
    RubiksCubeSolver


    Jetzt im Showroom
    Mach mal Option Strict On in die erste Zeile deines Codes.
    Man kann halt keinen String mit einer Textbox verknüpfen. Man kann jedoch einen String mit der Textbox.Text Property verknüpfen (da beides Strings sind)

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten