【发布时间】:2017-02-13 15:33:55
【问题描述】:
我正在尝试根据从 ComboBox 中选择的代码来选择客户的姓名。当我运行以下代码时,我收到一条错误消息,指出一个或多个必需参数没有值。
sql = "SELECT [Customer_Name] FROM [Customers] WHERE [Customer_Code] = @code"
Dim cmd As New OleDb.OleDbCommand(sql, con)
cmd.Parameters.Add("@code", OleDb.OleDbType.VarChar).Value = cmbCustomer.Text
Dim da As New OleDb.OleDbDataAdapter(sql, con)
Dim ds As New DataSet
da.Fill(ds)
txtCustomer.Text = ds.Tables(0).Rows(0).Item("Customer_Name")
但是,当我运行相同的查询但没有参数时,它可以正常工作。
sql = "SELECT [Customer_Name] FROM [Customers] WHERE [Customer_Code] = '" & cmbCustomer.Text & "'"
Dim cmd As New OleDb.OleDbCommand(sql, con)
Dim da As New OleDb.OleDbDataAdapter(sql, con)
Dim ds As New DataSet
da.Fill(ds)
txtCustomer.Text = ds.Tables(0).Rows(0).Item("Customer_Name")
第一种方法有什么明显的地方我错过了吗?如果不是,为什么这种方式不起作用?
【问题讨论】:
-
应该是
cmd.Parameters.Add("@code", cmbCustomer.Text);? -
我相信你最好改用 Parameter.AddWithValue
-
你想在哪里运行这个查询?直接,来自表格或报告?
-
@SteveSmith 不,我的其他查询都没有分号,它们都可以正常工作
-
@apomene 不,
AddWithValue不是最好的方法,它必须尝试匹配最好的数据类型,这可能会导致问题
标签: sql vb.net ms-access select parameters