多用户注册表vb.net

问题描述 投票:0回答:1

我有一个多用户的用户注册表。这工作正常,但代码无法识别是否已存在用户名。我知道我的代码中有错误,但我无法纠正那个。

代码如下,任何人都可以帮我排序,如何为读者编写修改代码

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
vb.net
1个回答
0
投票

看起来你有多少错误:

  1. 您应该在@username语句中指定username而不仅仅是SELECT,以便将其识别为参数。
  2. 你为什么要检查password的比赛呢?如果你这样做,人们可以使用相同的用户名只有一个不同的密码......你想要吗?
  3. 在你的SELECT中,你的员工表中有usernameField作为列名,但在你的INSERT中,你有username作为列名。这是什么?
  4. 在你的INSERT中,你指定参数@user,但在你的cmd.Parameters.AddWithValue语句中,你有@usernme
© www.soinside.com 2019 - 2024. All rights reserved.