我已经被困了好几个小时,我不知道该怎么做 我的代码不能在VB.Net中使用参数化SQL查询更新学生记录。
Dim result As Integer
cmd = New OleDbCommand("UPDATE students SET Student_Name=@name, Address=@address, Contact_No=@contact WHERE ID_Number=@id_number;", conn)
conn.Open()
cmd.Connection = conn
cmd.Parameters.AddWithValue("@id_number", txt_IDNumber.Text)
cmd.Parameters.AddWithValue("@name", txt_Name.Text.ToString)
cmd.Parameters.AddWithValue("@address", txt_Address.ToString)
cmd.Parameters.AddWithValue("@contact", txt_ContactNo.Text.ToString)
result = cmd.ExecuteNonQuery()
If result = 1 Then
MsgBox("Changes updated successfully.", vbInformation, "Message")
Else
MsgBox("Update unsuccessful.", vbCritical, "Message")
End If
conn.Close()
答案 0 :(得分:1)
OleDb没有按名称识别参数。在OleDb中,参数应按照在commandtext中列出的顺序添加到参数集合中。
这意味着您的代码会尝试更新 ID_Number 等于 txt_ContactNo
的内容的记录添加前三个
后,只需移动参数 @id_number 即可' No need to use ToString on a property of type string'
cmd.Parameters.AddWithValue("@name", txt_Name.Text)
cmd.Parameters.AddWithValue("@address", txt_Address.Text)
cmd.Parameters.AddWithValue("@contact", txt_ContactNo.Text)
cmd.Parameters.AddWithValue("@id_number", txt_IDNumber.Text)
作为旁注,请注意the problems of AddWithValue。这是一个方便的捷径,但你可以为它付出代价