Comment Ajouter des Guillemets à une Commande SQL Dynamique?
Je suis le stockage et l'édition d'un champ dans une base de données qui comporte une longue chaîne d'un ou de plusieurs phrases. chaque fois que j'entre dans une apostrophe dans la zone de texte et souhaitez l'enregistrer il déclenche une exception comme
"Syntaxe incorrecte près de 'l'.
Ouvrez les guillemets après la chaîne de caractères "."
est-il une idée pour éviter ça?
EDIT:
La question est:
SqlCommand com = new SqlCommand("UPDATE Questions SET Question = '[" +
tbQuestion.Text + "]', Answer = '[" +
tbAnswer.Text + "]', LastEdit = '" +
CurrentUser.Login +
"'WHERE ID = '" + CurrentQuestion.ID + "'");
S'il vous plaît montrer l'instruction SQL que vous utilisez.
tout simplement échapper 'avec un autre" comme les Anges de l'Enfer pour l'Enfer"s Anges
SqlCommand com = new SqlCommand("mise à JOUR des Questions posées Question = '[" + tbQuestion.Texte + "]', Reponse = '[" + tbAnswer.Texte + "]', LastEdit = '" + CurrentUser.Login + "'where ID = '" + CurrentQuestion.ID + "'");
C'est ce que nous avons tous pensé. Merci d'éditer votre question à ajouter cette information.
Ne vous inquiétez pas. Je vais le faire pour vous.
tout simplement échapper 'avec un autre" comme les Anges de l'Enfer pour l'Enfer"s Anges
SqlCommand com = new SqlCommand("mise à JOUR des Questions posées Question = '[" + tbQuestion.Texte + "]', Reponse = '[" + tbAnswer.Texte + "]', LastEdit = '" + CurrentUser.Login + "'where ID = '" + CurrentQuestion.ID + "'");
C'est ce que nous avons tous pensé. Merci d'éditer votre question à ajouter cette information.
Ne vous inquiétez pas. Je vais le faire pour vous.
OriginalL'auteur Ahmad Farid | 2009-07-14
Vous devez vous connecter pour publier un commentaire.
KM a dit, ne le faites pas!
Ne ce à la place:
+1 pour le paramétrage
OriginalL'auteur John Saunders
Si vous souhaitez inclure un guillemet simple dans un SQL champ, s'échapper à l'aide de guillemets simples
C'est pour SQL Server.
Luke: bien Sûr, il serait, mais je ne vais pas m'asseoir ici et tenter de deviner comment il est en train de faire son SQL, donc je vais donner le plus de réponse simple.
Assez juste, mais il fait de son SQL, la seule chose qui est certain, c'est qu'il n'est pas à l'aide de paramètres. À l'aide de paramètres permettrait d'éviter ce problème.
OriginalL'auteur TheTXI
Écrire un stockées produre à faire de votre domaine de l'édition et de l'utilisation des paramètres SQL pour enregistrer la valeur. Les citations ne sera pas question. Si vous ne voulez pas d'une procédure stockée à moins de bâtir votre texte SQL avec des marqueurs et l'utilisation des paramètres SQL.
OriginalL'auteur n8wrl
Dans MSSQL vous pouvez doubler votre mise de citations:
OriginalL'auteur cjk
il est difficile de te donner une réponse précise, car vous n'avez pas de liste de la base de données ou la langue de l'application que vous utilisez.
Vous devez être la construction de votre SQL de manière dynamique, et la citation à l'intérieur de la piqûre est interprété comme la fin de la chaîne. Selon la base de données que vous utilisez, vous avez besoin d'échapper les apostrophes à l'intérieur de chaque chaîne que vous voulez utiliser dans votre commande sql. Ceci peut être vu par l'impression de votre requête avant d'essayer de l'exécuter.
Vous ne mentionnez pas l'application que vous appelez la base de données à partir, mais quand vous construisez vous commande, vous devez utiliser un FIX_QUOTES() la commande que vous écrivez ou si votre langue:
Ce type de requête dynamique est très facile pour un les attaques par injection sql. Je recommanderais l'appel de la base de données avec un ou procédure stockée avec un paramètre de la liste.
OriginalL'auteur KM.
Comme certains l'ont déjà dit, l'ajout d'un supplément de devis fera l'affaire. Je peux confirmer que c'est également le cas pour Oracle (d'autres ont donné cette réponse valable pour MSSQL et SQL Server). Je pense que l'utilisation de procédures stockées est trop pour cela.
Oui, vous pouvez le faire. La citation double solution devra être utilisé si vous exécutez sql directement, pas par l'intermédiaire d' .NET DE L'API.
OriginalL'auteur awe