删除行时,一个或多个必需参数没有给定值
Posted
技术标签:
【中文标题】删除行时,一个或多个必需参数没有给定值【英文标题】:No given value for one or more required parameters when deleting a row 【发布时间】:2017-10-02 22:21:38 【问题描述】:我正在尝试从我的数据库中删除一行,当我点击一行然后按下我的删除按钮时,它说“没有一个或多个必需参数的给定值”,我不知道错误是什么,我检查了我的表名,它是正确的。我的另一个删除按钮工作正常
DialogResult result = MessageBox.Show("Are you sure you want to delete this user?",
"Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
string sql = string.Format(@"DELETE FROM User_list WHERE ID =0",
dataGridView2.CurrentRow.Cells[0].Value.ToString());
crudTools.ExecuteQuery(sql);
crudTools.FillDataGrid("SELECT * FROM User_list", ref dataGridView2);
【问题讨论】:
当您在该 ExecuteQuery 行上放置断点时,sql 变量的值是多少? 【参考方案1】:问题似乎源于string.Format
中的这个查询字符串:
string sql = string.Format(@"DELETE FROM User_list WHERE ID =0", dataGridView2.CurrentRow.Cells[0].Value.ToString());
一个或多个必需参数没有给定值表示WHERE
子句中传递的值无效,如果ID
是字符串列,只需添加用0
标记的第一个参数用单引号引起来,因为dataGridView2.CurrentRow.Cells[0].Value.ToString()
返回一个字符串,但没有任何单引号括起来,Access 会将其视为数值:
string sql = string.Format(@"DELETE FROM User_list WHERE ID = '0'", dataGridView2.CurrentRow.Cells[0].Value.ToString());
或者如果ID
是一个整数列,在传递之前将其转换为int
:
string sql = string.Format(@"DELETE FROM User_list WHERE ID = 0", Convert.ToInt32(dataGridView2.CurrentRow.Cells[0].Value.ToString()));
注意:如果值来自DataGridView
内的用户输入,请记住使用参数化查询。
类似问题:
No value given for one or more required parameters. error during Search
【讨论】:
我已经尝试了你的两个代码,但它是 string sql = string.Format(@"DELETE FROM User_list WHERE ID = '0'", dataGridView2.CurrentRow.Cells[0].Value. ToString());和 Convert.ToInt32 代码,但结果相同dataGridView2.CurrentRow.Cells[0].Value
返回什么值?该错误表明您在WHERE
子句中缺少一个参数,我认为可能破坏您的代码的查询只是那一行,您确定crudTools.ExecuteQuery(sql)
中的执行流程中断了吗?以上是关于删除行时,一个或多个必需参数没有给定值的主要内容,如果未能解决你的问题,请参考以下文章