1

私はデータベースとしてMSAccessを使用しており、その中のいくつかのレコードを更新するためにc#、.netを使用しています。しかし、それはエラーを与えています

「1つ以上の必須パラメーターに値が指定されていません。」

表には5つの列があり、2つだけ更新したいので、次のようなクエリを作成しました。

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

ここで、_UserRole、_authId、_Idは文字列です。

エラーは何でしょうか。updateステートメントですべてのパラメーターを指定する必要がありますか、それとも他の方法がありますか。

ありがとう

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 に答える