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

C# Discussion :

caractères spéciaux vers une base sql server


Sujet :

C#

  1. #1
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 200
    Points : 111
    Points
    111
    Par défaut caractères spéciaux vers une base sql server
    Bonjour à tous,

    Voici mon problème : J'envoie des requêtes http (API REST) en c# contenant des données au format JSON, entre autre le contenu d'un mail (qui peut contenir des caractères spéciaux). Ces requêtes sont reçues par un server codé en Java qui enregistre les informations dans une base SQL SERVER... Comment échapper ces caractères ? N'existe-t-il pas une fonction en c# ? Si je rajoute un "\" avant chaque caractère spécial, j'ai l'impression que ça le prend en compte du côté server mais après pour l'insert dans la base, ça pose problème...

    Merci de vos suggestions.

    PS : Je ne sais pas si mon problème est posté dans le forum le plus approprié.

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Bonjour,
    mis à part les ' je ne vois pas ce qui peut perturber ta requête d'insertion...
    Personnellement quand j'ai du texte un petit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .ToString.Replace("'","\"")
    suffit à gérer ce type d'erreur.

    Après je ne connais le format JSON...

    EDIT: Peux-tu donner un exemple des champs à enregistrer ?

  3. #3
    Membre habitué Avatar de swif79
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Points : 169
    Points
    169
    Par défaut
    Bonjour,
    Créer toi une méthode d'insertion où tu lit ses paramètres à ceux de la requête
    par 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
     
    private void Insert(string param1, string param2)
            {
                SqlCommand cmd = new SqlCommand("insert into matable(chp1, chp2) values (@chp1, @chp2)", this.conn);
                cmd.Parameters.AddWithValue("@chp1", param1);
                cmd.Parameters.AddWithValue("@chp2", param2);
                try 
                {
    	            cmd.Connection.Open();
    	            cmd.ExecuteNonQuery();
    	        } 
                finally 
                {
                    cmd.Connection.Close();
    	        }
            }
    Tu pourrais aussi passer la requête en paramètre...
    Tes paramètres seront échappés automatiquement et tu évite les injections sql.

  4. #4
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 200
    Points : 111
    Points
    111
    Par défaut
    @swif79 :
    Ce n'est pas de mon côté que j'effectue les requêtes, moi j'envoie juste les données au format JSON et c'est le serveur Java qui effectue les requêtes suivant les données que je lui ai spécifié, donc ta solution ne m'aide pas.

    @lead8209 :
    J'effectue déjà des remplacements :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    currentEmail.HTMLBody.Replace("\"", "\\\"").Replace("\r\n", "")
    J'avais déjà testé de remplacer les "'" mais ça ne change pas grand chose...
    Pourquoi "\\\"" ? Lorsque le serveur Java reçoit les données il les interprète avant de les enregistrer en base, ce qui est normal.

    Pour un exemple des champs à donner, comme tu peux le constater ce sont des mails au format html donc peut contenir quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body>J'ai fait ça !</body>
    C'est à dire des balises, parfois le CSS attaché, et des caractères spéciaux, enfin n'importe quoi.

    Merci de vos réponses.

Discussions similaires

  1. Bascule de données d'une base SQL Server vers MySQL
    Par Sebastos dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 04/02/2013, 11h10
  2. convertir une base sqlserve .sdf vers une base sql server .mdf
    Par solitude dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/01/2010, 22h54
  3. Réponses: 3
    Dernier message: 22/10/2008, 17h55
  4. Import Excel vers une base SQL Server / Framework 1.x
    Par myNonSpace dans le forum Windows Forms
    Réponses: 6
    Dernier message: 08/06/2007, 11h27
  5. Réponses: 10
    Dernier message: 05/03/2007, 13h40

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