Я работаю над системой школьного голосования. Я пробовал это несколько раз, и нет ошибки, но моя кнопка входа в систему не работает, если я ввожу данные и нажимаю логин. Я использую 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
Во-первых, я собираюсь предположить, что у вас есть опечатка, поскольку она использует имя пользователя и пароль в виде одного и того же текстового поля:
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
Из того, что я вижу, ваша проблема - это ваш первый оператор 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