C# 针对某些参数更新Access数据库的查询

C# 针对某些参数更新Access数据库的查询,c#,.net,ms-access,insert-update,C#,.net,Ms Access,Insert Update,我使用MS Access作为数据库,并使用c#,.net更新其中的一些记录。但这是一个错误的说法 “没有为一个或多个必需参数提供值。” 表中有5列,我只想更新2列,为此我编写了如下查询 "update User_DTL set user_role_id = '" + _UserRole + "', auth_id ='" + _authId + "'" + " WHERE Id = '" + _Id + "' "; 其中_

我使用MS Access作为数据库,并使用c#,.net更新其中的一些记录。但这是一个错误的说法

“没有为一个或多个必需参数提供值。”

表中有5列,我只想更新2列,为此我编写了如下查询

"update User_DTL set user_role_id = '" + _UserRole + "', auth_id ='" + _authId + "'"
                                    + " WHERE Id = '" + _Id + "' ";
其中_UserRole、_authId、_Id是字符串

可能是什么错误。我是否需要在update语句中给出每个参数,或者有其他方法


谢谢

每当您遇到这样的错误时,请插入一个断点并检查您的查询,以确保它看起来与您期望的一样。例如,查询中是否实际存在一个_UserRole、_authId和_Id

您还可以在准备语句之前添加一些防御性代码来检查它们——本例检查以确保_UserRole不是null或空的

if (!string.IsNullOrEmpty(_UserRole)) { ...

很难说没有看到您的代码,但根据错误消息,我猜测以下情况之一:

1) 用户\u DTL中不存在以下字段之一:用户\u角色\u id、身份验证id、id
2) \u UserRole、\u authId、\u Id包含一个引号字符

解决此问题的最佳方法是打印实际连接的查询字符串,然后在Access中打开SQL查询并运行它。那么问题是什么应该是显而易见的

顺便说一句:这段代码可能存在一些SQL注入漏洞