1

好的,首先嘿。

从技术上讲,我是这个网站的新手,但是几年来我一直在使用它作为资源,只是因为我很难过,我现在才需要你的帮助。

我有一个查询 Db 的 VB 脚本,用字符串填充预期的框并显示它。

我的问题是,当我尝试使用更新 SQL 命令时,它会完成,但是当我手动检查时它不会更新数据库。

Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\Data.mdb';")
Dim da As New OleDbDataAdapter
Dim dt As New DataTable()
Dim cmd As New OleDbCommand
da.SelectCommand = New OleDbCommand("update FDSL set Host=@Host, Owner=@Owner where ID = @ID", con)


    Dim paramID As New OleDbParameter
    paramID.ParameterName() = "@ID"
    paramID.Value() = Label8.Text
    da.SelectCommand.Parameters.Add(paramID)
    Dim paramHost As New OleDbParameter
    paramHost.ParameterName() = "@Host"
    paramHost.Value() = TextBox1.Text
    da.SelectCommand.Parameters.Add(paramHost)
    Dim paramOwn As New OleDbParameter
    paramOwn.ParameterName() = "@Owner"
    paramOwn.Value() = TextBox4.Text

    da.SelectCommand.ExecuteNonQuery()

    MessageBox.Show("Record Updated! ", "Update Status", MessageBoxButtons.OK, MessageBoxIcon.Information)

    Refresh()
    con.Close()

我也尝试过使用 .tostring 最后的参数,但这也不起作用。

- - - - - 解决了 - - - - - - - -

我必须感谢@Gord Thompson 的帮助,但是我通过重新编码解决了这个问题。

        Dim str As String
    str = "update FDSL set Hostname=@Hostname, Owner=@Owner where ID=@id"
    Dim cmd As New OleDbCommand(str, con)
    cmd.Parameters.AddWithValue("@Hostname", TextBox1.Text)
    cmd.Parameters.AddWithValue("@Owner", TextBox2.Text)
    cmd.Parameters.AddWithValue("@ID", textbox6.Text)
    con.Open()
    cmd.ExecuteNonQuery()
    con.Close()

现在可以正常工作了,感谢您的再次帮助!

4

2 回答 2

1

Jet.OLEDBACE.OLEDB忽略参数的名称,因此我们需要按照它们在 CommandText 中出现的确切顺序指定参数。在您的情况下,您需要更改执行.Parameters.Add()块的顺序,以便执行@Host,然后@Owner,然后@ID

于 2013-11-14T14:29:50.000 回答
0

我必须感谢@Gord Thompson 的帮助,但是我通过重新编码解决了这个问题。

        Dim str As String
    str = "update FDSL set Hostname=@Hostname, OS=@OS where ServerID=@id"
    Dim cmd As New OleDbCommand(str, con)
    cmd.Parameters.AddWithValue("@Hostname", TextBox1.Text)
    cmd.Parameters.AddWithValue("@OS", TextBox2.Text)
    cmd.Parameters.AddWithValue("@ID", textbox6.Text)
    con.Open()
    cmd.ExecuteNonQuery()
    con.Close()

现在可以正常工作了,感谢您的再次帮助!

于 2013-11-15T09:17:54.807 回答