我有一个按钮,按下该按钮后,设置用户在数据库中的权限。 (如果管理员UserTypeID设置为'2',如果客户设置为'1')。但是当我运行下面的代码时,一切都保持不变。我认为这是来自SQL语句,但我不确定。有人可以帮忙吗?
Protected Sub btnSetUser_Click(sender As Object, e As System.EventArgs) _
Handles btnSetUser.Click
Dim conn As New OleDbConnection( _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\...\WebSite3\db.mdb;")
Dim cmd As OleDbCommand = _
New OleDbCommand("UPDATE [User] SET [UserTypeID] WHERE Username=?", conn)
conn.Open()
cmd.Parameters.AddWithValue("@Username", txtUser.Text)
If ddUserType.SelectedItem.Text = "Administrator" Then
cmd.Parameters.AddWithValue("@UserTypeID", "2")
cmd.ExecuteNonQuery()
lblSetUser.Text = txtUser.Text + "was set to Administrator."
ElseIf ddUserType.SelectedItem.Text = "Customer" Then
cmd.Parameters.AddWithValue("@UserTypeID", "1")
cmd.ExecuteNonQuery()
lblSetUser.Text = txtUser.Text + "was set to Customer."
End If
conn.Close()
End Sub
结束班
答案 0 :(得分:0)
您只执行选择查询 - 根本不会修改任何数据。
您将需要使用更新查询,为用户名和用户权限编号提供参数。
答案 1 :(得分:0)
如果添加参数@Username
,则命令应具有此参数
SELECT [UserTypeID] FROM [User] WHERE Username = @Username
此外,您稍后会添加一个附加参数,在查询中根本不会发生!您调用cmd.ExecuteNonQuery()
,它仅适用于INSERT,UPDATE和DELETE查询。
您的查询可能看起来像这样
UPDATE [User]
SET UserTypeID = @UserTypeID
WHERE Username = @Username
Dim cmd As OleDbCommand = New OleDbCommand( _
"UPDATE [User] SET UserTypeID = @UserTypeID WHERE Username = @Username", conn)
Dim userType As String = ddUserType.SelectedItem.Text
Dim userTypeId As Integer = If(userType = "Administrator", 2, 1)
cmd.Parameters.AddWithValue("@UserTypeID", userTypeId)
cmd.Parameters.AddWithValue("@Username", txtUser.Text)
conn.Open()
cmd.ExecuteNonQuery()
lblSetUser.Text = txtUser.Text + "was set to " & userType
更新(一些澄清)
在"UDATE [User] SET UserTypeID = @UserTypeID WHERE Username = @Username"
[User]
是表格的名称UserTypeID
是用户类型ID列的名称@UserTypeID
是用户类型id参数(新值)Username
是用户名列的名称@Username
是用户名参数的名称
您可能需要更改这些名称才能符合实际情况。
答案 2 :(得分:0)
您正在进行SELECT
而不是UPDATE
...
New OleDbCommand("SELECT [UserTypeID] FROM [User] WHERE Username=?", conn)
应该是
New OleDbCommand("UPDATE [User] SET [UserTypeID] = @UserTypeID WHERE Username = @Username", conn)