Обновить запрос для базы данных Access для определенных параметров - PullRequest
1 голос
/ 14 июня 2010

Я использую MS Access в качестве базы данных и использую c #, .net для обновления некоторых записей в ней.Но он выдает ошибку, говоря

«Не задано значение для одного или нескольких обязательных параметров.»

В таблице 5 столбцов, и я хочу обновить только 2, для этого я написалзапрос типа

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

, где _UserRole, _authId, _Id являются строками.

В чем может быть ошибка.Нужно ли указывать каждый параметр в операторе обновления или есть какой-то другой способ.

Спасибо

Ответы [ 2 ]

1 голос
/ 14 июня 2010

Трудно сказать, не видя ваш код, но на основании сообщения об ошибке я предполагаю одно из следующего:

1) В User_DTL не существует одно из следующих полей: user_role_id, auth_id, Id
2) _UserRole, _authId, _Id содержит символ одинарных кавычек.

Лучший способ устранения неполадок - это распечатать фактическую каскадную строку запроса, а затем открыть SQL-запрос в Access и запустить его. Тогда должно быть совершенно очевидно, в чем проблема.

Кстати: у вас, вероятно, есть некоторые уязвимости в SQL-инъекциях с этим кодом.

1 голос
/ 14 июня 2010

Всякий раз, когда вы сталкиваетесь с такой ошибкой, вставьте точку останова и изучите ваш запрос, чтобы убедиться, что он выглядит так, как вы ожидаете. Например, есть ли в запросе _UserRole, _authId и _Id.

Вы также можете добавить некоторый защитный код, чтобы проверить их перед подготовкой оператора - этот пример проверяет, что _UserRole не является нулевым или пустым.

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