2010-06-14 7 views
1

J'utilise MS Access comme base de données et j'utilise C#, .net pour mettre à jour certains enregistrements. Mais il donne une erreur en disantRequête de mise à jour pour la base de données Access pour certains paramètres

"Aucune valeur donnée pour un ou plusieurs paramètres requis."

Il y a 5 colums dans le tableau et je veux mettre à jour seulement 2, pour que je l'ai écrit la requête comme

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

où _UserRole, _authId, _id sont des chaînes.

Quelle peut être l'erreur. Ai-je besoin de donner chaque paramètre dans la déclaration de mise à jour ou il y a un autre moyen.

Merci

Répondre

1

Chaque fois que vous rencontrez une telle erreur, tenir un point d'arrêt et d'examiner votre requête pour assurer il semble que vous attendez. Par exemple, existe-t-il réellement un _UserRole, _authId et _Id présents dans la requête.

Vous pouvez également ajouter du code défensif pour les vérifier avant de préparer l'instruction - cet exemple vérifie que le _UserRole n'est pas vide ou vide.

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

Difficile à dire sans voir votre code, mais basé sur le message d'erreur je devine une des façons suivantes:

1) L'un des domaines suivants n'existe pas dans User_DTL: user_role_id, auth_id , Id
2) _UserRole, _authId, _Id contient un caractère guillemet simple.

La meilleure façon de résoudre ce problème est d'imprimer la chaîne de requête concaténée réelle, puis d'ouvrir une requête SQL dans Access et de l'exécuter. Il devrait être assez évident quel est le problème alors.

BTW: Vous avez probablement des vulnérabilités d'injection SQL avec ce code.

Questions connexes