Passage de paramètre avec simple quote pour procédure stockée

Résolu
juju 92 Messages postés 4 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 24 mai 2007 - 24 mai 2007 à 09:45
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 24 mai 2007 à 18:09
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

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
24 mai 2007 à 15:42
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
3
juju 92 Messages postés 4 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 24 mai 2007
24 mai 2007 à 18:06
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?
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
24 mai 2007 à 18:09
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
0
Rejoignez-nous