我有一个多用户的用户注册表。这工作正常,但代码无法识别是否已存在用户名。我知道我的代码中有错误,但我无法纠正那个。
代码如下,任何人都可以帮我排序,如何为读者编写修改代码
Private Sub OK_Click(sender As Object, e As EventArgs) Handles OK.Click
Dim user, pass As String
user = UsernameTextBox.Text
pass = PasswordTextBox.Text
Dim connection1 As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Credentials.mdb;")
Dim command As New OleDbCommand("SELECT [ID] FROM [Staff] WHERE [usernameField] = username AND [passwordField] = password", connection1)
Dim usernameParam As New OleDbParameter("username", Me.UsernameTextBox.Text)
Dim passwordParam As New OleDbParameter("password", Me.PasswordTextBox.Text)
command.Parameters.Add(usernameParam)
command.Parameters.Add(passwordParam)
command.Connection.Open()
Dim reader As OleDbDataReader = command.ExecuteReader()
If reader.HasRows Then
MessageBox.Show("User Exist")
MyPlayer.SoundLocation = path & LogOnsound
PasswordTextBox.Text = ""
UsernameTextBox.Text = ""
ElseIf user = "" Or pass = "" Then
MsgBox("Please Fill The Boxs", , "Error")
Else
Dim connection As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Credentials.mdb;"
Using myconnection As New OleDbConnection(connection)
myconnection.Open()
Dim sqlq As String = "INSERT INTO [staff] ([username], [password]) VALUES (@user, @pass)"
Using cmd As New OleDbCommand(sqlq, myconnection)
cmd.Parameters.AddWithValue("@usernme", user)
cmd.Parameters.AddWithValue("@passwrd", pass)
cmd.ExecuteNonQuery()
MsgBox("User Registered!", , "register")
user = ""
pass = ""
End Using
End Using
End If
command.Connection.Close()
End Sub
看起来你有多少错误:
@username
语句中指定username
而不仅仅是SELECT
,以便将其识别为参数。password
的比赛呢?如果你这样做,人们可以使用相同的用户名只有一个不同的密码......你想要吗?SELECT
中,你的员工表中有usernameField
作为列名,但在你的INSERT
中,你有username
作为列名。这是什么?INSERT
中,你指定参数@user
,但在你的cmd.Parameters.AddWithValue
语句中,你有@usernme
。