Échapper les guillemets dans une chaîne de caractères en VB6
Je suis en train de faire quelques petits changements à un vieux VB web application, j'ai besoin d'ajouter des guillemets à l'intérieur d'une chaîne, je n'ai pas eu de chance jusqu'à présent. La chaîne est
Dim sql As String = "Select * from Usertask Where UserId = " & Session("UserId") & " and JobID=" & ddlReqTask.SelectedValue
J'ai besoin d'ajouter des guillemets autour de la Session("UserID") de la valeur.
- Avez-vous besoin des guillemets ou des apostrophes? Généralement SQL utilise des guillemets simples, et je ne pense pas que ce serait un problème dans une chaîne de caractères.
- L, vous souhaitez peut-être modifier le titre de la question. Peut-être plus approprié de parler de "s'Échapper les guillemets dans une chaîne de caractères en VB6" ou quelque chose le long de ces lignes.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
""
pour insérer une citation dans une chaîne électronique.g:dim sometext as String = "Hello ""Frank"" how are you?"
Qui vous donne
Bonjour "Frank" comment allez-vous?
Pour échapper à un devis, vous avez juste besoin d'ajouter une autre citation, je crois que c'est ce dont vous avez besoin:
Je vous recommande l'utilisation de paramétrer SQL au lieu de bâtir une adhoc instruction SQL comme ce que vous pourriez laissez-vous ouvert à une injection SQL. Cela signifie que vous n'avez pas besoin de vous soucier de la concaténation de devis dans la chaîne, ainsi que l'amélioration de la performance de la requête (en supposant que sql server), car il permet l'exécution du plan de mise en cache et la réutilisation.
par exemple
Puis ajouter 2 ADODB.Les paramètres de l'objet de Commande pour fournir des valeurs pour les 2 paramètres
par exemple,
Et la même chose pour le JobId paramètre.
C'est une vulnérabilité d'injection SQL et vous devriez PAS être le faire. En le faisant de cette façon, vous permettez à vos utilisateurs d'exécuter n'importe quelle requête, ils veulent en vous donnant un nom d'utilisateur comme
Au lieu de cela, utiliser des paramètres. Selon la façon dont vous exécutez SQL, il y a différentes façons de le faire; merci de nous montrer le code qui exécute la requête SQL.
En réponse à votre question,
Cette chaîne sera
Bonjour, j'ai des "Guillemets"!
Vous pouvez également utiliser
Chr(34)
dans la concaténation.Une ou l'autre fonctionne (les autres exemples et celui-ci). certaines personnes préfèrent celui-ci car il peut être moins déroutant, cependant, les exemples ci-dessus ne sont pas parfaitement ledgible et arent exatly la science de fusée
La plupart des serveurs SQL, dans mon expérience, besoin d'un devis unique pour les chaînes.
La meilleure façon de le faire est de laisser .net deside pour vous, en utilisant des Paramètres SQL. Voici un échantillon (également dans VB.Net): http://www.knowdotnet.com/articles/dynamicsqlparameters.html
Cela a aussi l'avantage de la sécurité contre les injections SQL.
c'est comme ça..
produit..