C#, MySQL et les quotes

Je debute en C# et j’ai un probleme…
j’ai bien essaye de chercher la solution sur le forum et sur internet pour voir si la reponse avais pas ete donne et j’ai passe un certain momment sans trouver la reponse…

Comme c’est une question de base de programmation avec des base de donnees, j’ai pense que beaucoup d’entre vous connaitraient la reponse alors je me lance et je vous la pose:

J’ai besoin de stoquer du texte dans une BD (MySQL).
Pour le moment quand je fais le INSERT, j’ecris comme suit:

myCommand = « INSERT INTO table(column1, column2) VALUES(’ » + value1 +"’, ‹ " + value2 + " ›)";

cependant je sais que ca posera des problemes quand l’utilisateur entrera les caracteres " ou ’ dans le texte.

En PHP, il y a la fonction addslashes que j’utilisait et qui permettait de despecialiser ces caracteres en les precedant de \ mais en C# ca existe ou je dois me faircir cette fonction a la main ?

Sinon, si je suis a cote de la plaque, dites moi quelle est la meilleure methode pour faire ca (je ne veux pas ecrire des fonctions integrees dans la BD, je ne m’y connais pas assez dedans)

Glop si tu passe dans le coin tu dois savoir ca toi :P" :stuck_out_tongue:
:stuck_out_tongue:

Thx ! :stuck_out_tongue:

string.Replace ?

Il y a un truc tout fait pour:
http://msdn.microsoft.com/library/default…metersTopic.asp

En gros, tu ecris ta requete entiere avec des @monparam dedans, puis apres tu associe un SqlParameter a ta SqlCommand qui va gerer tout ca pour toi.

Oui concatener des strings pour faire des requetes SQL c’est mal sur plein de choses et c’est un trou de secu chiant a boucher facilement. Donc tu fais ta sql command avec genre “SELECT * FROM GayBars WHERE KinikFriends>@KinikFriends” et apres tu fais sqlCommand.Parameters.Add("@KinikFriends", maGrosseVariable). Et hop.

Hmmm, SqlParameter c’est pas associé à SQLServer ?
Dji indique utiliser MySQL…

Au mieux un OleDbParameter, mais j’ai jamais testé.

[quote name=‹ Xas › date=’ 24 Mar 2005, 14:20’]Hmmm, SqlParameter c’est pas associé à SQLServer ?
Dji indique utiliser MySQL…

Au mieux un OleDbParameter, mais j’ai jamais testé.
[right][post=« 344005 »]<{POST_SNAPBACK}>[/post][/right][/quote]
Oui c’est pareil, l’API est censee etre la meme quel que soit la DB a quelque details pres et implementer les memes interfaces. Ca c’est pas « un detail » :stuck_out_tongue: tout API de DB native ou ODBC devrait fonctionner de la meme maniere.

Merci de l’info, je me disait bien que il devais y avoir un truc tout pret de deja fait :stuck_out_tongue:

Thx ! :stuck_out_tongue:

Allez, j’y retourne ! :stuck_out_tongue:

y’a un oeuf dans la coquille dans ce que j’ai ecris…

Voila la requette:
« INSERT INTO department(Title, Description) VALUES (@Title, @Description) »

Voila le code:
MySqlDataAdapter MyAdapter = new MySqlDataAdapter();
MySqlTransaction myTrans;
myTrans = this.connection.BeginTransaction(IsolationLevel.Serializable);
MyAdapter.InsertCommand = new MySqlCommand(query, this.connection, myTrans);
MyAdapter.InsertCommand.Parameters.Add("@Title", title);
MyAdapter.InsertCommand.Parameters.Add("@Description", description);
MyAdapter.InsertCommand.ExecuteNonQuery();

et je me choppe cette erreur:
#23000Column ‹ Title › cannot be null

pourtant quand j’affiche Title et Description (type string) j’ai ceci:
« title=toto description=titi »

Je comprends pas, what’s up doc ? :stuck_out_tongue:

apparemment ca laisse tout le monde perplexe :stuck_out_tongue: :stuck_out_tongue: :stuck_out_tongue:

:stuck_out_tongue:

Essaye de remplacer les @ par des ? et dit nous si ca fonctionne :stuck_out_tongue:

[quote name=‹ GloP › date=’ 28 Mar 2005, 22:09’]Essaye de remplacer les @ par des ? et dit nous si ca fonctionne :stuck_out_tongue:
[right][post=« 344879 »]<{POST_SNAPBACK}>[/post][/right][/quote]
Tu sais que je t’aime toi ! :stuck_out_tongue: :stuck_out_tongue:
B)

Trop trop merci ! :stuck_out_tongue:

Juste une question pour ma culture :stuck_out_tongue:
Pourquoi les @ ne passaient’ils pas ? Ces caracteres ont quelque choses de particulier ou bien le ‹ ? › est le bon caractere a utiliser de par la « norme » ?

[quote name=‹ Dji › date=’ 28 Mar 2005, 23:35’]Juste une question pour ma culture :stuck_out_tongue:
Pourquoi les @ ne passaient’ils pas ? Ces caracteres ont quelque choses de particulier ou bien le ‹ ? › est le bon caractere a utiliser de par la « norme » ?
[right][post=« 344965 »]<{POST_SNAPBACK}>[/post][/right][/quote]
Y a pas de normes a proprement parler mais le provider Mysql gratuit que t’utilise a voulu faire le malin et a change le truc que tous les autres providers utilisait (@)pour une obscure raison. On leur en veut pas, c’est pas la mort a changer mais bon, voila quoi… on se pose des questions et « ? » est la reponse… comme quoi…