参数化SQL更新查询不起作用

时间:2017-04-07 07:41:06

标签: sql vb.net

我已经被困了好几个小时,我不知道该怎么做 我的代码不能在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()

1 个答案:

答案 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。这是一个方便的捷径,但你可以为它付出代价

相关问题