没有给出一个或多个必需参数的值.搜索期间出错

 摩羯参议院1314 发布于 2023-02-08 17:38

我试图在一个简单的访问数据库中搜索数据.代码是这样的

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"在数据库客户字段中作为文本类型.为什么会出现此错误以及如何在没有错误的情况下完成此搜索?

1 个回答
  • 我想错误是在asd 作为客户名称的值传递的文本中

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

    将其放在单引号中允许db引擎将其识别为要检查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注入攻击,并消除解析文本框内容的问题.事实上,如果没有参数,并且文本框包含单引号,则字符串连接方法将失败并出现语法错误.

    2023-02-08 17:41 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有