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 :

requête SQL contenant une variable [Débutant]


Sujet :

C#

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 105
    Par défaut requête SQL contenant une variable
    Bonjour,

    j'aimerais écrire dans mon programme une requête sql, la connexion se fait bien, et je veu passer a la vitesse supérieure: utiliser l'opérateur like pour rechercher un document précis.

    voici ce que j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "SELECT TOP 1 NumPiece, Description FROM maBDD.dbo.EXT_GESTION_DOCUMENTS WHERE NomFichier LIKE 'element["Name"]%'" + element["Name"].ToString() + "'";
    or, j'ai 5 erreurs à la compilation:
    2 concernant un oublie de ';'
    1 signalant que "name" n'existe pas dans le contexte actuel.
    2 me signalant que seul les assignations, les appels, l'utilisation de 'new' incréments et décréments peuvent être utilisés comme instruction.

    ce qui a changé depuis tout à l'heure où sa marchait: l'ajout de 'element["Name"]%', avant j'utilisais a la place juste '%'

  2. #2
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 25
    Par défaut
    Bonjour,

    'Name' est une variable ou une valeur ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 105
    Par défaut
    en fait, j'utilise un eventreceiver itemadded,

    l'élément ajouté est p (un SPitemEventProperties)
    element est déclaré comme celà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SPListItem element = p.ListItem
    donc element["Name"] contient le nom du fichier qui a été ajouté.

  4. #4
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Bonjour,

    on en parle très souvent sur ce forum, il est très fortement déconseillé de procéder à des concaténations dans les requêtes SQL.
    Les requêtes paramétrées sont là pour ça, elles permettent de sécuriser ton application, d'empêcher les erreurs de concaténation, etc.

    Commence par modifier ton code en ce sens, et montre nous une plus large portion de code car certaines erreurs ne viennent pas de la ligne mentionnée.

  5. #5
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 25
    Par défaut
    Quelle est la valeur du like que tu souhaites obtenir ?
    Si c'est du style 'element["Name"]%<Nom du fichier>'
    Dans ce cas double ecrit plutôt 'element[""Name""]%<Nom du fichier>'

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Utilise plutôt des requêtes paramétrées plutôt que de construire tes requêtes par concaténation, tu éviteras toutes sortes de problèmes (format de données, injection SQL, lisibilité...)
    Ce tuto explique comment faire

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 105
    Par défaut
    bon, j'ai modifié avec l'aide de vos conseils, voici ce que j'ai maintenant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     public override void ItemAdded(SPItemEventProperties p){
          SPListItem element = p.ListItem;
          sql = "SELECT TOP 1 NumPiece, Description FROM maBDD.dbo.EXT_GESTION_DOCUMENTS WHERE NomFichier LIKE '" + element["Name"].ToString +"'%";
    }

    seulement, j'ai encore une erreure:

    Erreur 1 L'opérateur '+' ne peut pas être appliqué aux opérandes de type 'string' et 'groupe de méthodes'

  8. #8
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 25
    Par défaut
    ToString est une fonction, ajoute () à la fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    element["Name"].ToString()
    Les modérateurs ont raison, pour un code plus robuste et plus propre il faut utiliser les requêtes paramètrées.

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 105
    Par défaut
    je vais essayer de m'y attaquer alors, merci.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/02/2008, 12h45
  2. Récuperer le résultat d'une requête SQL dans une variable
    Par DashRendar dans le forum Accès aux données
    Réponses: 3
    Dernier message: 24/01/2008, 11h04
  3. [VBA et SQL] Requête SQL utilisant une variable VBA
    Par Altrensa dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 06/07/2007, 10h23
  4. passer du texte + une requête sql dans une variable
    Par Giantrick dans le forum Langage
    Réponses: 3
    Dernier message: 18/04/2007, 18h15
  5. Comment stocker une requête sql dans une variable ?
    Par innova dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/10/2006, 10h01

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