gpt4 book ai didi

vb.net - 没有为一个或多个必需参数给出值。搜索期间出错

转载 作者:行者123 更新时间:2023-12-02 08:32:05 25 4
gpt4 key购买 nike

我正在尝试在简单的 Access 数据库中搜索数据。代码是这样的

Call connect()
con.Open()
cmd = New OleDbCommand("Select * from PO_Record_Table where Customer=asd", con)
dr = cmd.ExecuteReader
While dr.Read
MsgBox(dr(1))
End While

con.Close()

如果我按搜索按钮,则会出现错误:没有为一个或多个必需参数给出值出现在这条线上

dr = cmd.ExecuteReader

记录“asd”以文本类型存在于数据库客户字段中。为什么会出现这个错误以及如何在没有错误的情况下完成此搜索?

最佳答案

我认为错误出现在作为客户名称值传递的文本 asd

cmd = New OleDbCommand("Select * from PO_Record_Table where Customer='asd'", con)

将其放在单引号中允许数据库引擎将其识别为字符串值,以根据 Customer 列名称进行检查。如果不带引号,它会被解释为尚未传递给命令的参数名称。

编辑 在下面的评论中,您尝试将文本框的内容作为“客户”列的值传递,但您忘记在文本框文本值周围添加引号。

cmd = New OleDbCommand("Select * from PO_Record_Table where Customer='" & textbox.text & "'", con)

但是,永远不应该使用字符串连接方法来完成此操作,而应始终使用参数化方法

cmd = New OleDbCommand("Select * from PO_Record_Table where Customer=@custName", con)
cmd.Parameters.AddWithValue("@custName", Txt_Find.Text)
dr = cmd.ExecuteReader
.....

这是查询数据库的唯一好方法,传递命令文本和用户输入获得的值。此方法可以让您的代码免受 SQL Injection attacks 的威胁。并消除解析文本框内容的问题。事实上,如果没有参数并且文本框包含单引号,则字符串连接方法将失败并出现语法错误。

关于vb.net - 没有为一个或多个必需参数给出值。搜索期间出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20722791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com