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êtes parametrés [Champ et Table]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de thelpi
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 217
    Par défaut Requêtes parametrés [Champ et Table]
    salut les gens,

    je maitrise depuis peu les requêtes parametrés et je veux aller plus loin dans leur utilisation, mais je ne sais pas si ce que je souhaite faire est possible.
    J'ai une méthode qui fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static void AddParamWithValue(IDbCommand cmd, string nameParam, DbType typeParam, int sizeParam, object value)
            {
                IDbDataParameter param = cmd.CreateParameter();
                param.DbType = typeParam;
                param.Size = sizeParam;
                param.ParameterName = nameParam;
                param.Value = value;
                cmd.Parameters.Add(result);
            }
    Elle marche nickel, sauf que maintenant j'en ai besoin pour une requête de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update @table set @champ1=@value where @champ2=@cle
    j'ai fait ceci pour le moment mais je n'ai même pas tester, je sent déja l'échec arriver au niveau des 3 premières lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    AddParamWithValue(cmd, "@table", DbType.String, nomBase.Length, nomBase);
    AddParamWithValue(cmd, "@champ1", DbType.String, nomChamp1.Length, nomChamp1);
    AddParamWithValue(cmd, "@champ2", DbType.String, nomChamp2.Length, nomChamp2);
    AddParamWithValue(cmd, "@value", DbType.String, 30, maValeur);
    AddParamWithValue(cmd, "@cle", DbType.Int32, 10, maCle);
    Comment je dois faire pour parvenir à parametrer tout ça?

    merci de votre aide

  2. #2
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Ce que tu cherches à faire, ce n'est pas une requête paramétrée, c'est une requête dynamique.

    Un requête paramétrée permet de paramétrer des valeurs. Mais pas la syntaxe d'une requête. Par exemple,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select id, nom, prenom from Personnes where id = 3
    Seul "3" peut être mis sous forme de paramètre. Le reste, non.

    Dans ton cas, si tu tiens à faire des requêtes dynamiques, je te conseille plutôt de faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    string modele = "update {0} set {1}=@value where {2}=@cle"
    string command = string.Format(modele, nomTable, nomChamp1; nomChamp2);
    AddParamWithValue("@value", ...);
    AddParamWithValue("@cle", ...);

  3. #3
    Membre très actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Par défaut
    En principe cela devrait aller, mais pourquoi avoir céé ta méthode AddParamWithValue?
    Sinon, une simple requête paramétrée marcherait bien avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update @table set @champ1=@value where @champ2=@cle

  4. #4
    Membre confirmé Avatar de thelpi
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 217
    Par défaut
    J'ai crée cette méthode pasque taper ces 6 lignes pour chaque paramètre de chaque requête (environ 500 requêtes, parfois avec une dizaine de paramètres) j'y aurais passer un mois

    la solution de Guulh me plait bien en tout cas, je reviendrais si ça ne marche pas

    merci à vous 2!

  5. #5
    Membre très actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Par défaut
    Ok! bonne continuation

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

Discussions similaires

  1. Requête portant sur deux tables et deux champs
    Par OliviaS dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 12/05/2008, 19h37
  2. Réponses: 4
    Dernier message: 22/11/2007, 19h23
  3. [Requête] regroupement de 2 tables avec champs différents
    Par egg3774 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 29/04/2007, 21h40
  4. Réponses: 3
    Dernier message: 14/03/2007, 17h31
  5. [Requête] plusieurs champs dans une même table ayants la même source
    Par Christophe93250 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 25/04/2006, 16h18

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