Проверка StudentId и StudentPassword с базой данных mySql с использованием Visual Basic

0

Я работаю над системой школьного голосования. Я пробовал это несколько раз, и нет ошибки, но моя кнопка входа в систему не работает, если я ввожу данные и нажимаю логин. Я использую Visual Studio 2013 и буду рад, если кто-нибудь сможет помочь. Спасибо

Imports MySql.Data.MySqlClient

Public Class Form1

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    ConnectToSQL()
End Sub

'connecting to sql method
Private Sub ConnectToSQL()
    Dim con As New MySqlConnection
    Dim cmd As New MySqlCommand
    Dim StudentId As String
    Dim StudentPassword As String

    Try

        If con.ConnectionString = "Data source= localhost; port=3306; database= Students; user=root; password=;" Then
            con.Open()

            cmd.Connection = con
            cmd.CommandText = "SELECT StudentId, StudentPassword, StudentName FROM members"

            Dim lrd As MySqlDataReader = cmd.ExecuteReader()
            If lrd.HasRows Then
                While lrd.Read()
                    StudentId = lrd("StudentId").ToString
                    StudentPassword = lrd("StudentPassword").ToString
                    If StudentPassword = TextBox1.Text And StudentId = TextBox1.Text Then
                        MsgBox("you logged in succesfully")
                        Me.Hide()
                        Form2.Show()

                        TextBox1.Text = ""
                        TextBox2.Text = ""
                    End If

                End While

            Else
                MsgBox("Username and password do not match")
                TextBox2.Text = ""
            End If
        End If

    Catch ex As Exception
        MsgBox(ex.Message)

    Finally
        con.Close()
    End Try
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    TextBox1.Text = ""
    TextBox2.Text = ""
    TextBox1.Focus()
End Sub
End Class
  • 0
    Пожалуйста, добавьте пример данных и ожидаемый результат ваших проверок.
Теги:

2 ответа

0

Во-первых, я собираюсь предположить, что у вас есть опечатка, поскольку она использует имя пользователя и пароль в виде одного и того же текстового поля:

If StudentPassword = TextBox1.Text And StudentId = TextBox1.Text Then

Пароль, вероятно, является вторым, формируя это:

If StudentPassword = TextBox2.Text And StudentId = TextBox1.Text Then

Поскольку вы студент и новичок в этом, не собираетесь входить в обсуждение параметров или параметры SQL или фильтрацию, хешировать пароли или что-то в этом роде, но пара меняется:

Ваш друг на беспорядках:

MsgBox("Username and password do not match")
TextBox2.Text = ""

Проблема заключается в том, что в вашем случае отсутствие строк просто означает, что в базе данных нет членов, а не какая-либо информация, которая вам нужна, или должна сказать кому-то.

Кроме того, вам не нужно указывать имя пользователя и пароль, если вы все равно будете скрывать форму. Тип studentFound var используется для определения совпадения совпадений. Мы хотим отобразить ошибку, если совпадение не найдено.

Итак, это дает нам следующее:

   While lrd.Read()
        StudentId = lrd("StudentId").ToString
        StudentPassword = lrd("StudentPassword").ToString
        If StudentPassword = TextBox2.Text And StudentId = TextBox1.Text Then
            MsgBox("you logged in succesfully")
            Me.Hide()
            Form2.Show()
            studentFound = True
        End If
    End While
    If Not studentFound Then
        MsgBox("Username/Password Combination Not Found")
        TextBox1.Text = ""
        TextBox2.Text = ""
    End If
  • 0
    Я сделал то же самое, и теперь это сработало. Я действительно ценю твою помощь.
  • 0
    Супер ... если вам нравится ... пожалуйста, примите (зеленый флажок)
0

Из того, что я вижу, ваша проблема - это ваш первый оператор if:

    If con.ConnectionString = "Data source= localhost; port=3306; database= Students; user=root; password=;" Then

Это проверяет, установлена ли строка соединения для этого значения и будет определенно оценена как false.

Я предполагаю, что вы хотите установить эти параметры, а затем открыть соединение с базой данных, а не проверить, установлены ли эти настройки для определенной строки

Чтобы заставить его работать, просто удалите этот оператор if и просто установите connectionstring как это, а затем откройте соединение

    con.ConnectionString = "Data source= localhost; port=3306; database= Students; user=root; password=;" Then
  • 0
    Я удалил первый оператор if и теперь con.ConnectionString = "Источник данных = localhost; порт = 3306; база данных = студенты; пользователь = root; пароль =;" но кнопка входа в систему все еще не работает.
  • 0
    Вы пытались отладить свой код и проверили, правильно ли вызван метод и открывается ли соединение с базой данных?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню