我正在我的网站上创建一个设置页面,用户可以在其中更改他的电子邮件地址,姓名等。 问题是更新语句,它不起作用,因为数据库中没有任何变化,但它没有给我一个错误,所以我不知道是什么。 当我检查断点时,它显示参数正在获得正确的值,当我在互联网上搜索时,我找不到任何有相同问题的人。
我将粘贴以下更新的代码:
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()
答案 0 :(得分:1)
您只需在参数add语句中包含“@”:
CmdUpdate.Parameters.AddWithValue("@firstname", txtFirstName.Text)
......等等......
答案 1 :(得分:1)
您错过了sql-parameters中的'@':
CmdUpdate.Parameters.AddWithValue("@firstname", txtFirstName.Text)
等
答案 2 :(得分:1)
使用
CmdUpdate.Parameters.AddWithValue("@firstname", txtFirstName.Text)
您错过了在AddWithValue()
答案 3 :(得分:1)
userid列是否可能不匹配,因此您的WHERE子句匹配零记录并且没有任何更新?这可能是由许多事情引起的 - 空白,字符编码等等。