Passage de paramètre avec simple quote pour procédure stockée [Résolu]

Signaler
Messages postés
4
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
24 mai 2007
-
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
-
Bonjour,

j'essaye déspérément de récupérer un champ de formulaire de type text qui peut contenir des simples quotes.
Voici le principe:
1) je récupère le champ de formulaire evenement_description (method POST)
2) je l'utilise dans ma procédure stockée en créant un paramètres avec le code:




With cmd
.parameters.Append .CreateParameter("@evenement_description", adVarChar, adParamInput, 500, Request.Form("evenement_description"))
...



En procédant de cette manière, si le champ contient une simple quote alors le paramètre de la procédure est tronqué avant le caractère '. Dans le cas contraire, tout se passe bien

J'ai donc décider de remplacer par le code suivant:





With cmd
.parameters.Append .CreateParameter("@evenement_description", adVarChar, adParamInput, 500, Replace(Request.Form("evenement_description"), "'", "''"))



mais le résultat est le même.
J'ai essayé de doubler les simples quote lors de la saisie du champ de formulaire....même conséquences, le paramètre inséré est tronqué.
J'ai même carrément essayer d'enlever ce caractère de la chaîne, mais on dirait que la fonction replace ne le reconnait pas.

J'avoue que je suis vraiment dans le floue....alors si quelqu'un a été confroté à ce problème et a trouvé une solution, je suis preneur.
Merci

3 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
25
l'interet des requete parameté c'est justement de pas avoir à s'embeter avec ce genre de chose ... par contre je ne connais pas le .Append.CreateParameter

personnellement j'utilise

cmd.Parameters.Add("@event....", SqlDbType.NVarchar).Value = "toto";

car là je pense que tu spécifie une taille maximal (500)

<hr />Cyril - MSP - MCTS ASP.net & SQL
Messages postés
4
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
24 mai 2007

Merci pour ta réponse je viens de résoudre mon problème qui ne se situait pas au niveau de la création des paramètres de la requête mais plutôt de ce qui arrivait dans Request.Form.

J'ai utilisé un fichier inclus "tout près" dans mon script dont le but est de faire patienter l'utilisateur en affichant le message "Veuillez patienter..." pendant le traitement de la requête. Il se trouve, entre autre, que ce fichier recrée les champs de formulaire et durant l'opération fait passer les caractères situés après les simples quotes à la trappe.
Pour plus de précision: http://www.aspfr.com/code.aspx?ID=27789, la prochaine fois je ferais plus attention

Cela mis à part, quels sont les avantages dans l'utilisation de ta méthode? tu n'a pas besoins de spécifier la taille de ton paramètre?
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
25
l'utilisation de ma méthode est-ce que je trouve le plus rapide à écrire, je spécifie seulement ce dont j'ai besoin, mais c'est vrai que pour encore plus de sécurité on peut passer la taille du paramètre ...

<hr />Cyril - MSP - MCTS ASP.net & SQL