Probleme avec apostrophe '

Signaler
Messages postés
38
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
3 décembre 2010
-
 hasardbio -
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

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
37
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
Messages postés
13
Date d'inscription
jeudi 20 août 2009
Statut
Membre
Dernière intervention
24 août 2010

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
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
37
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.
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 :-)
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