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 :

[Debutant] Variables dans requete SQL


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 119
    Points : 104
    Points
    104
    Par défaut [Debutant] Variables dans requete SQL
    Bonjour,
    J'aimerai inserer une variable dans une requete SQL mais ce que je fais n'a pas l'air de fonctionner :s

    voici le code:

    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
             <%  int x = 1980;
             while (x < DateTime.Today.Year)
             {
                 %>
     
        <div>
     
            <asp:AccessDataSource ID="ListePub" runat="server" 
                DataFile="~/pub.mdb" 
     
                SelectCommand="SELECT [Identificateur], [Auteurs], [Titre], [Comment], [Journal], [Volume], [Pages], [Annee], [Livre], [Jrnl], [doi] FROM [Publications] WHERE (([Annee] = ?) AND ([IPadress] = ?)) ORDER BY [DateCreation]" >
                <SelectParameters>
                    <asp:QueryStringParameter DefaultValue='<%=x%>' Name="Annee" 
                        QueryStringField="pp" Type="Int16" />
                    <asp:QueryStringParameter DefaultValue="165.91.02.48" Name="IPadress" 
                        QueryStringField="IPadress" Type="String" />
                </SelectParameters>
            </asp:AccessDataSource>
    ...
    ...
    ...
    ...
    ...
    Je pense que cela vient d'une erreur de syntaxe. Pouvez vous m'aider s'il vous plait?

    Je vous remercie

  2. #2
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Citation Envoyé par Freygolow Voir le message
    Bonjour,
    J'aimerai inserer une variable dans une requete SQL mais ce que je fais n'a pas l'air de fonctionner :s
    Le mieux c'est de passer par les SqlParameters Tu peux faire un tour ici ou ici

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 119
    Points : 104
    Points
    104
    Par défaut
    Je te remercie pour ta réponse

    Malgrès avoir lu les tuto que tu m'a fourni, je ne vois pas comment inclure cette ligne pour les requetes parametrées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    myCommand.Parameters.Add(new SqlParameter("@annee", SqlDbType.Int, 4)); 
     
    myCommand.Parameters["@annee"].Value = Convert.ToInt32(maTextBox1.Text);
    Ma façon de faire la requête est vraiment différente de celle des tuto, je ne sais donc pas comment l'adapté :s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            <asp:AccessDataSource ID="ListePub" runat="server" 
                DataFile="~/base.mdb" 
     
                SelectCommand="SELECT [Identificateur], [Auteurs], [Titre], [Comment], [Journal], [Volume], [Pages], [Annee], [Livre], [Jrnl], [doi] FROM [Publications] WHERE (([Annee] = @annee) AND ([IPadress] = ?)) ORDER BY [DateCreation]" >
                <SelectParameters>
                    <asp:QueryStringParameter DefaultValue="<%=x%>" Name="annee" 
                        QueryStringField="annee" Type="String" />
                    <asp:QueryStringParameter DefaultValue="125.122.11.01" Name="IPadress" 
                        QueryStringField="IPadress" Type="String" />
                </SelectParameters>
            </asp:AccessDataSource>
    Pour résumé le probleme, la variable x n'est pas prise en compte, d'ailleur ça ne compile pas :s

  4. #4
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Points : 6
    Points
    6
    Par défaut SelectCommand
    Le plus simple
    ListePub.SelectCommand = String.Format(maRequete, maTextBox1.Text);
    et tu remplace ? par {0} dans ta requete

  5. #5
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Citation Envoyé par Lapobo Voir le message
    Le plus simple
    ListePub.SelectCommand = String.Format(maRequete, maTextBox1.Text);
    et tu remplace ? par {0} dans ta requete
    Et comment tu fais si dans le textbox, je saisis :
    ''));DROP DATABASE;--
    La solution avec les paramètres est la bonne, ta solution est une erreur de développement.

  6. #6
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    La solution avec les paramètres est la bonne
    toujours

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 119
    Points : 104
    Points
    104
    Par défaut
    Pouvez vous me montrer comment vous faites marcher votre solution avec les paramètres s'il vous plait. J'ai essayé en faisant de nombreux tests à 8h-12h, 13h-17h aujourd'hui et je n'ai toujours pas trouvé :/

    A vous entendre dire, ça parait tellement simple que ça me fait peur à propos de mes compétences bien que je débute dans l'asp.net

    Je vous remercie.

  8. #8
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Drop Database
    Ben le privilege Drop Database ne ce donne pas à n'importe qui

  9. #9
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Citation Envoyé par Lapobo Voir le message
    Ben le privilege Drop Database ne ce donne pas à n'importe qui
    Tu ne comprends pas le problème. Ce qui est important ce n'est pas le "drop database", c'est la possibilité d'exécuter une requête arbitraire. Si tu préfères, remplace par "select * from clients"...

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 119
    Points : 104
    Points
    104
    Par défaut
    Dans mon cas, la variable n'est pas la valeur entrée dans une Textbox mais un compteur qui est incrémenter dans chaque tour de boucles :s

    pour essayer de simplifier ma question:

    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
    <% int x = 10;
    while(x<100){ %>
     
            <asp:AccessDataSource ID="ListePub" runat="server" 
                DataFile="~/base.mdb" 
     
                SelectCommand="SELECT * FROM client WHERE ([Annee] = @annee) " >
                <SelectParameters>
                    <asp:QueryStringParameter DefaultValue="<%=x%>" Name="annee" 
                        QueryStringField="annee" Type="String" />
     
                </SelectParameters>
            </asp:AccessDataSource>
     
    <% 
    x++;
    } %>
    La méthode que j'ai utilisée ici ne marche pas.
    J'aimerai donc savoir comment faire en sorte que la requete marche lorsque x est présent.

  11. #11
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Citation Envoyé par Freygolow Voir le message
    Dans mon cas, la variable n'est pas la valeur entrée dans une Textbox mais un compteur qui est incrémenté dans chaque tour de boucles
    Dans mon article, je parle aussi des raisons autre que la sécurité pour mettre en avant les paramètres SQL. Il y a par exemple des problématiques de performances. C'est aussi à prendre en considération.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 119
    Points : 104
    Points
    104
    Par défaut
    Le probleme c'est j'ai beau lire l'article, mais je ne vois pas comment le mettre en pratique dans mon exemple.
    On utilise pas la meme méthode j'ai l'impression

    J'essai d'inserer tes exemples un peu partout mais rien y fait

Discussions similaires

  1. [MySQL] Syntaxe insertion variable dans requete SQL
    Par przvl dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/06/2015, 15h34
  2. variable dans requete SQL pour delphi
    Par socooooool dans le forum Bases de données
    Réponses: 9
    Dernier message: 25/01/2013, 11h27
  3. variable dans requete sql
    Par xian21 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/01/2009, 12h14
  4. Insérer variable integer dans requete SQL?
    Par El Doctor J dans le forum C++Builder
    Réponses: 8
    Dernier message: 26/11/2007, 10h18
  5. afficher variable de requete sql dans datareport
    Par liquid dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/03/2007, 11h01

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