1

我使用 MS Access 作为数据库并使用 c#、.net 来更新其中的一些记录。但它给出了错误说法

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

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

"update User_DTL set user_role_id = '" + _UserRole + "', auth_id ='" + _authId + "'"
                                    + " WHERE Id = '" + _Id + "' ";

其中 _UserRole、_authId、_Id 是字符串。

可能是什么错误。我需要在更新语句中给出每个参数还是有其他方式。

谢谢

4

2 回答 2

1

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

1) User_DTL 中不存在以下字段之一:user_role_id、auth_id、Id
2) _UserRole、_authId、_Id 包含单引号字符。

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

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

于 2010-06-14T15:44:35.720 回答
1

每当您遇到此类错误时,请插入断点并检查您的查询以确保它看起来符合您的预期。例如,查询中是否存在 _UserRole、_authId 和 _Id。

您还可以在准备语句之前添加一些防御性代码来检查它们 - 此示例检查以确保 _UserRole 不为 null 或为空。

if (!string.IsNullOrEmpty(_UserRole)) { ...
于 2010-06-14T07:16:51.363 回答