Access Database error ::“没有给出一个或多个必需参数的值。”
我有一个datagridview。 在该DGV中,第一柱是combobox柱。 我想,当选择这个combobox值时,下一个fild将自动从数据库中填充。 但是显示出错误。
没有为OleDbDataReader上的一个或多个必需参数赋值dr1 = cmd1.ExecuteReader();
我发布了代码。 请帮我。
OleDbConnection con = new OleDbConnection(conn); con.Open(); for (int i = 0; i < dgv.Rows.Count; i++) { string query = "select Description from General where AccCode='" + dgv.Rows[i].Cells[0].Value + "' and conpanyID='" + label1.Text + "'"; OleDbCommand cmd1 = new OleDbCommand(query, con); //OleDbDataAdapter daBranchName = new OleDbDataAdapter(cmd); OleDbDataReader dr1 = cmd1.ExecuteReader(); while (dr1.Read()) { dgv.Rows[i].Cells[1].Value = dr1["Description"].ToString(); } } con.Close();
这种字符串连接对SQL注入攻击是开放的。
请改用参数化查询 。
string query = "select [Description] from [General] where AccCode= ? and conpanyID= ?"; OleDbCommand cmd1 = new OleDbCommand(query, con); cmd1.Parameters.AddWithValue("@acc", dgv.Rows[i].Cells[0].Value); cmd1.Parameters.AddWithValue("@ID", label1.Text);
正如HansUp所指出的 , Description
和General
是保留关键字 。 使用方括号,如[Description]
和[General]
如建议的那样,使用参数化查询。
就错误而言,我猜这个字段名称是错误的:
conpanyID=
应该:
companyID=
使用参数,否则将打开sql注入攻击。
string query = "select [Description] from General where AccCode=? and conpanyID=?";
现在你可以设置参数了
上述就是C#学习教程:Access Database error ::“没有给出一个或多个必需参数的值。”分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
cmd.Parameters.AddWithValue("@p1", val1); cmd.Parameters.AddWithValue("@p2", val2);
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1005648.html