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 :

requete sql avec apostrophe


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Points : 42
    Points
    42
    Par défaut requete sql avec apostrophe
    Bonjour à tous,

    Je suis en cours de réalisation d'une appli assez conséquente. Je débute avec C# et notamment l'utilisation des requêtes sql.
    J'ai réalisé la quasi-totalité de l'appli et je viens de me rendre compte en testant que les requêtes d'insertion avec apostrophe génèrent des erreurs.
    Le problème c'est que ces chaines de caractères qui contiennent les apostrophes et qui résultent de la saisie dans un formulaire, sont stockées dans des variables et c'est donc ces variables qui sont passées aux différentes requêtes.
    Je dois reprendre l'intégralité de mon code pour solutionner ce problème.
    Après quelques recherches, s'offrent à moi 2 solutions à priori (si vous en voyez d'autres je suis preneur).
    -les requêtes paramétrées (mais cela oblige à rajouter systématiquement les lignes de code d'ajout des paramètres et des valeurs pour chaque requête)
    -créer une fonction de remplacement de ces apostrophes par un double (cela oblige à vérifier toutes les saisies et les passer à la fonction de correction)
    Avant de débuter cette correction, pourriez-vous me dire quelle est à votre avis, la solution la plus rapide, la plus simple et le plus efficace? (un compromis j'imagine)
    Merci d'avance

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juin 2010
    Messages : 210
    Points : 243
    Points
    243
    Par défaut
    Bonjour,

    En terme de rapidité et de simplicité je pense que les deux solutions se valent.

    Cependant, le mieux est l'utilisation des requêtes paramétrées.
    Cela est plus évolutif et te permet une meilleur gestion de tes types de données.

    Je pense donc, que tu dois te tourner vers cette méthode.

    A+

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Points : 766
    Points
    766
    Par défaut
    +1 Requêtes paramétrées

    C'est une bonne pratique, surtout contre les injections SQL.
    Les fautes d'orthographes sus-citées sont déposées auprès de leurs propriétaires respectifs. Aucune responsabilité n'est engagée sur la lisibilité du message ou les éventuels dommages qu'il peut engendrer.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Points : 42
    Points
    42
    Par défaut
    Ok, je vous remercie.
    Ca conforte mes pensées mais je voulais des avis avisés.

  5. #5
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Requêtes paramétrées sans se poser la moindre question.

    Sinon :
    - les risques d'injection restent présents (y'a pas que les apostrophes qui peuvent poser problème)
    - toutes les requêtes sont envoyées avec des valeurs littérales au SGBD, ce qui l'oblige à recompiler de A à Z chaque requête, même si elle est lancée 2000 fois de suite, alors que les requêtes paramétrées permettent de réutiliser le même plan pour chaque combinaison de valeurs
    - saturation de mémoire garantie avec des valeurs litérales, le SGBD gardant en cache le résultat des requêtes, et la moindre différence entre deux requête, même équivalente, va créer autant de caches, là où une requête paramétrée ne conservera du cache que pour chaque tuple de paramètres.

    Et niveau code/debug, c'est infiniment plus simple que des requêtes SQL de 2 kilomètres avec des '''' à n'en plus finir et autres textes kilométriques qui viennent polluer le code...

    Que dire d'une requête de ce forum où une personne s'amuse à coller des exemples de requêtes SQL pour lesquels elle a besoin d'aide ? Je te souhaite bon courage pour débuger la requête si ça plante avec un "parenthèse droite absente" ou un "chaîne non terminée"
    On ne jouit bien que de ce qu’on partage.

Discussions similaires

  1. [AC-2007] requete sql avec apostrophe
    Par hariots dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 06/05/2011, 19h08
  2. requete SQL avec valeur max
    Par oeil de nuit dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/01/2006, 08h58
  3. REQUETE SQL AVEC HAVING
    Par juju_77 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 05/08/2005, 09h49
  4. Probleme de requete SQL avec un champs date
    Par ju360modena dans le forum ASP
    Réponses: 5
    Dernier message: 16/06/2005, 11h18
  5. [JDBC] retour de requete sql avec valeur NULL
    Par maxxou dans le forum JDBC
    Réponses: 3
    Dernier message: 13/09/2004, 14h40

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