首页 > 解决方案 > 尝试更新数据库中的密码和用户名我得到操作员错误

问题描述

Imports System.Data.OleDb
Imports System.Data

Public Class Form3
    Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim ran As New Random
        TextBox2.Text = ran.Next(1, 8)
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If TextBox1.Text = "" Or MaskedTextBox3.Text = "" Then
            MsgBox("Please fill all text boxes With the required info")
        Else
            Dim cmd As OleDbCommand
            Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source =C:\users\nikh8610\Documents\users.accdb")
            Dim str As String
            con.Open()
            str = "UPDATE users SET username = '" & TextBox1.Text & "'WHERE (ID = '" & TextBox2.Text & "') AND password='" & MaskedTextBox3.Text & "' WHERE (ID = '" & TextBox2.Text & "')"
            cmd = New OleDbCommand(str, con)
            cmd.ExecuteNonQuery()
            con.Close()
        End If
    End Sub
End Class

标签: vb.net

解决方案


您的查询无效。您WHERE在查询中使用了两个部分。尝试以下操作:

str = "UPDATE users SET username = '" & TextBox1.Text & "' WHERE ID = '" & TextBox2.Text & "' AND password='" & MaskedTextBox3.Text & "'"

您也没有UPDATE用户的密码。您可以UPDATE对用户名和密码使用以下内容。

str = "UPDATE users SET username = '" & txtUsername.Text & "', password = '" & txtNewPassword.Text & "' WHERE ID = '" & txtUserID.Text & "' AND password = '" & txtOldPassword.Text & "'"

您还应该对用户信息使用准备好的语句:UPDATE

Dim cmd As OleDbCommand = New OleDbCommand()
cmd.Connection = con
cmd.CommandText = "UPDATE users SET username = ?, password = ? WHERE ID = ? AND password = ?"

cmd.Parameters.Add("NewUsername", OleDbType.VarWChar, 50)
cmd.Parameters.Add("NewPassword", OleDbType.VarWChar, 50)
cmd.Parameters.Add("UserID", OleDbType.Long)
cmd.Parameters.Add("OldPassword", OleDbType.VarWChar, 50)
cmd.Parameters(0).Value = txtNewUsername.Text
cmd.Parameters(1).Value = txtNewPassword.Text
cmd.Parameters(2).Value = txtUserID.Text
cmd.Parameters(3).Value = txtOldPassword.Text

cmd.Prepare()
cmd.ExecuteNonQuery()

推荐阅读