Probleme avec apostrophe '

dimabab Messages postés 38 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 3 décembre 2010 - 17 août 2009 à 15:43
 hasardbio - 11 mai 2013 à 00:01
bjr j voudrais inserer un text
voila le code
UPDATE myTable SET champ1 ='val1' WHERE id=condtion

quand val1 contient apostrophe ' (ex: l'activité) Erreur
j'ai compris l'erreur mais j'ai pas su la résoudre
j'ai fait ''val1'' mais ça n'a pas marché
les ## aussi sans resultat
merci de votre aide

5 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
17 août 2009 à 17:10
Salut,

2 solutions :
* Propre, sécurisée et optimisée utilisée les requetes paramétrées
http://msdn.microsoft.com/fr-fr/library/system.data.sqlclient.sqlparameter%28VS.80%29.aspx


string sql "Select * from matable where categorie @CategoryName"
  categoriesAdapter.SelectCommand.Parameters.Add(
    "@CategoryName", SqlDbType.VarChar, 80).Value = "toasters";



* Sale et pas maintenable doubler les '
et sécurité = nulle
0
bitangm Messages postés 13 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 24 août 2010
25 août 2009 à 15:16
bonjour,
Ton code
UPDATE myTable SET champ1 ='val1' WHERE id=condtion


Après remplacement de val1 par l'activité devient
UPDATE myTable SET champ1 ='l'activité' WHERE id=condtion


Tu vois bien qu'il ya maintenant trois apostrophe
et ceci est une erreur qui ne saurait être interprétée

Voiçi la solution

public string RempApos(string str) 
{
     return str.Replace("'", "''");
}

private void button1_Click(object sender, EventArgs e)
{
    textBox2.Text "UPDATE myTable SET champ1 '" + RempApos(textBox1.Text) + "' WHERE id = condtion" ;
}


===================================================
BITANG Marcel Yves
bitangm@yahoo.fr
+242 405 50 61
+242 650 46 47
+242 700 02 23
+237 75 17 16 81
+237 75 68 58 22
+237 96 04 18 51
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
25 août 2009 à 15:23
Des requetes paramétrées évite ce probleme.

Et améliore les performances car le plan d'éxécution prend en compte les parametres à la place de recalculer pour toute la chaine SQL.

Et gere la sécurité
type
apostrophe
....

Donc à ne pas oublier.
0
pour ameliore les performances

c simple juste faire ca

/*public string RempApos(string str) 

{

     return str.Replace("'", "''");

}*/



private void button1_Click(object sender, EventArgs e)

{
    string monString = textBox1.Text;
    textBox2.Text "UPDATE myTable SET champ1 '" + monString.Replace("'", "''") + "' WHERE id = condtion" ;

}


du coup plus besoin d'appelle une method pour faire ca :-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
le problème est résolu avec la procédure stockée exple: create proc MaProcedure(@param1 varchar(50)) as select * from categorie inner join famille on famille.Id_Famille=categorie.Id_Famille
where Famille.Nom_Fam=@param1
0
Rejoignez-nous