IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[C#] Comment changer dans une chaine


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut [C#] Comment changer dans une chaine
    Salut,je voudrais savoir comment changer les caractères ' (côte et anti-côte) " (guillement) et aussi \ (slash) dans ma chaine de caractère (string chaine) car il me fait les inhiber afin de pouvoir insérer cette chaine dans ma base pour ne pas pouvoir générer des erreurs .
    An noter qu j'ai utilisé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nom_chaine.Replace(" " " , " \" ");
    Et ceci n'a pas marché, le compilateur ne comprend les caractères pris en question,il signale une erreur de fin de chaine.Merci d'avance.

    [Tag [Résolu] corrigé par freegreg]
    [Merci de cliquer sur le bouton tout en bas à gauche]

  2. #2
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    ...et encore une fois cette pratique douteuse.

    Avec ADO.net, il y a une façon beaucoup beaucoup plus propre d'éviter les erreurs provoquées par ces caractères : les paramètres.

    Je t'invite à lire le tuto sur Ado.net

    http://dotnet.developpez.com/cours/ADO.NET/
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut Re
    Citation Envoyé par Keihilin
    ...et encore une fois cette pratique douteuse.

    Avec ADO.net, il y a une façon beaucoup beaucoup plus propre d'éviter les erreurs provoquées par ces caractères : les paramètres.

    Je t'invite à lire le tuto sur Ado.net

    http://dotnet.developpez.com/cours/ADO.NET/
    Mais non, le probleme se situe au niveau du compilation du code et du language C# donc pas avec l'insertion au niveau de la base.

  4. #4
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Oui oui, j'avais bien compris...Je t'explique juste que faire un string.Replace() sur une requête que tu veux exécuter est une mauvais pratique...Utilise les paramètres, t'auras pas de caractères à remplacer.
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut RE
    Citation Envoyé par Keihilin
    Oui oui, j'avais bien compris...Je t'explique juste que faire un string.Replace() sur une requête que tu veux exécuter est une mauvais pratique...Utilise les paramètres, t'auras pas de caractères à remplacer.
    Ok mais dans quelle rubrique? (les rubriques des paramètres sont nombreuses).Merci d'avance.

  6. #6
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut Re: RE
    Citation Envoyé par onouiri
    Ok mais dans quelle rubrique? (les rubriques des paramètres sont nombreuses).Merci d'avance.
    Lis le tutoriel que je t'ai indiqué...

    et puis un rapide exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    using System.Data;
     
    ...
     
    private void Insert()
    {
    int ID = 1;
    string Value = "Aujourd'hui";
    OleDb.OleDbConnection Connection;
    OleDb.OleDbCommand Command;
    Connection = new OleDb.OleDbConnection(" ... ");
    Command = Connection.CreateCommand();
    Command.CommandText = "INSERT INTO myTable(RowID, RowValue) VALUES(@myID, @myValue)";
    Command.Parameters.Add(new OleDb.OleDbParameter("@myID",OleDb.OleDbType.Integer)).Value = ID;
    Command.Parameters.Add(new OleDb.OleDbParameter("@myValue",OleDb.OleDbType.VarChar)).Value = Value;
    Connection.Open();
    Command.ExecuteNonQuery();
    Connection.Close();
    Command.Dispose();
    Connection.Dispose();
     
    }
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 26
    Points : 28
    Points
    28
    Par défaut
    Bien que je suis d'accord avec Keihilin, je vais donner la reponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom_chaine.Replace("\"" , "\\\"");
    Les caracteres speciaux pour SQL sont a peu pres les memes que ceux pour String.

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut Résolu
    Citation Envoyé par Monorom
    Bien que je suis d'accord avec Keihilin, je vais donner la reponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom_chaine.Replace("\"" , "\\\"");
    Les caracteres speciaux pour SQL sont a peu pres les memes que ceux pour String.
    Le problème est résolu et voila le bout de code respectif:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SqlDataReader reader;
    string text = tbmessage.Text.ToString();
     
    string req1 = "INSERT INTO T_messages(date_envoie,txt_msg,objet_msg)VALUES('"+DateTime.Today+"',@mytext,'"+tbobjet.Text+"')";
    SqlCommand cmd =new SqlCommand(req1,la_connexion);
    cmd.Parameters.Add("@mytext",SqlDbType.VarChar);
    cmd.Parameters["@mytext"].Value=text.ToString();
    cmd.ExecuteNonQuery();
    Merci pour votre contribution

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Comment remplacer caracteres dans une chaine ?
    Par ChristopheOce dans le forum C#
    Réponses: 6
    Dernier message: 07/09/2011, 15h46
  2. Réponses: 13
    Dernier message: 03/10/2007, 11h25
  3. Réponses: 2
    Dernier message: 12/01/2006, 08h34
  4. Changer un char dans une chaine
    Par Calaz dans le forum C
    Réponses: 10
    Dernier message: 07/10/2005, 13h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo