0

我正在我的网站上创建一个设置页面,用户可以在其中更改他的电子邮件地址、姓名等。问题是更新语句,它不起作用,因为数据库中没有任何变化,但它没有给我一个错误,所以我不知道发生了什么。当我检查断点时,它表明参数正在获取正确的值,而当我在互联网上搜索时,我找不到任何有同样问题的人。

我将在下面粘贴更新的代码:

Dim CmdUpdate As New OleDbCommand
        Dim Sqlstatement As String = "UPDATE tblUsers SET firstname = @firstname, lastname = @lastname, userPassword = @userPassword, email = @email, avatar = @avatar WHERE userID = @userID;"
        CmdUpdate.Connection = dbConn.cn
        CmdUpdate.CommandText = Sqlstatement

        CmdUpdate.Parameters.AddWithValue("firstname", txtFirstName.Text)
        CmdUpdate.Parameters.AddWithValue("lastname", txtLastName.Text)
        CmdUpdate.Parameters.AddWithValue("userID", Session("userID"))

        If txtPassword.Text = "" Then
            CmdUpdate.Parameters.AddWithValue("userPassword", Session("hashedpass"))
        Else
            CmdUpdate.Parameters.AddWithValue("userPassword", hash(txtPassword.Text))
        End If

        CmdUpdate.Parameters.AddWithValue("email", txtEmail.Text)
        CmdUpdate.Parameters.AddWithValue("avatar", strAvatar)

        dbConn.cn.Close()
        dbConn.cn.Open()
        CmdUpdate.ExecuteNonQuery()
        dbConn.cn.Close()
4

4 回答 4

1

您只需在参数添加语句中包含“@”:

CmdUpdate.Parameters.AddWithValue("@firstname", txtFirstName.Text)

...等等...

于 2013-05-22T16:17:14.303 回答
1

错过了sql 参数中的“@”:

 CmdUpdate.Parameters.AddWithValue("@firstname", txtFirstName.Text)

等等

于 2013-05-22T16:18:26.973 回答
1

利用

CmdUpdate.Parameters.AddWithValue("@firstname", txtFirstName.Text)

您缺少添加“@AddWithValue()

请参阅此处的教程

于 2013-05-22T16:18:43.377 回答
1

userid 列是否可能不匹配,因此您的 WHERE 子句匹配零记录并且没有任何更新?这可能是由许多因素引起的——空格、字符编码等等。

于 2013-05-22T16:30:44.567 回答