2010-06-14 1 views
1

Я использую MS Access как базу данных и используя C# .net для обновления некоторых записей в нем. Но он дает ошибку:Обновить запрос для базы данных Access для определенных параметров

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

Есть 5 colums в таблице, и я хочу, чтобы обновить только 2, за что я написал запрос, как

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

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

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

Благодаря

ответ

1

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

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

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

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

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

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

BTW: Вероятно, у вас есть некоторые уязвимости в SQL-инъекции с помощью этого кода.