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

Windows Forms Discussion :

Optimiser insertcommand et updatecommand


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 26
    Par défaut Optimiser insertcommand et updatecommand
    Bonjour, j'ais un code que je pense possible d'optimiser mais je ne vois pas comment, le code est en fait composer de deux partie , updatecommand et insertcommand il s'agit de la meme chose, mais je vois pas comment créer un seuk blok voir moins.
    Merci pour votre aide.

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     if (id_pays.Equals("4"))
                {
                    insertCommand.Parameters.Add("@tva", SqlDbType.VarChar, 250, "tva");
                    insertCommand.Parameters.Add("@" + Dest_Prov, SqlDbType.NVarChar, 250, Dest_Prov);
                }
     
     
                else if (id_pays.Equals("5"))
                {
                    insertCommand.Parameters.Add("@Provenance", SqlDbType.VarChar, 250, "Provenance");
                    insertCommand.Parameters.Add("@Destination", SqlDbType.VarChar, 250, "Destination");
                }
                else if (id_pays.Equals("1"))
                {
                                   insertCommand.Parameters.Add("@regime_fr", SqlDbType.VarChar, 250, "Régime");
                    insertCommand.Parameters.Add("@nature_fr", SqlDbType.VarChar, 250, "Nature");
                }
                else if (id_pays != "5")
                    insertCommand.Parameters.Add("@transport", SqlDbType.NVarChar, 1, "transport");
                else
                {
                                    insertCommand.Parameters.Add("@" + Dest_Prov, SqlDbType.NVarChar, 250, Dest_Prov);
                    insertCommand.Parameters.Add("@regime", SqlDbType.VarChar, 250, "Régime");
                    insertCommand.Parameters.Add("@nature", SqlDbType.VarChar, 250, "Nature");
                                    insertCommand.Parameters.Add("@dept", SqlDbType.VarChar, 250, "dept");
                    insertCommand.Parameters.Add("@origine", SqlDbType.VarChar, 250, "origine");
                }
    			// Partie insert qui ressemble à l'identique au updatecommand
     
    			 if (id_pays.Equals("4"))
                {
                    updateCommand.Parameters.Add("@tva", SqlDbType.VarChar, 250, "tva");
                    updateCommand.Parameters.Add("@" + Dest_Prov, SqlDbType.NVarChar, 250, Dest_Prov);
                }
     
                           else if (id_pays.Equals("5"))
                {
                    updateCommand.Parameters.Add("@Provenance", SqlDbType.VarChar, 250, "Provenance");
                    updateCommand.Parameters.Add("@Destination", SqlDbType.VarChar, 250, "Destination");
                }
                else if (id_pays.Equals("1"))
                {
                                   updateCommand.Parameters.Add("@regime_fr", SqlDbType.VarChar, 250, "Régime");
                    updateCommand.Parameters.Add("@nature_fr", SqlDbType.VarChar, 250, "Nature");
                }
                else if (id_pays != "5")
                    updateCommand.Parameters.Add("@transport", SqlDbType.NVarChar, 1, "transport");
                else
                {
                    // Pour les autres pays on met à jour soit la colonne "Provenance" ou "Destination".
                    updateCommand.Parameters.Add("@" + Dest_Prov, SqlDbType.NVarChar, 250, Dest_Prov);
                    updateCommand.Parameters.Add("@regime", SqlDbType.VarChar, 250, "Régime");
                    updateCommand.Parameters.Add("@nature", SqlDbType.VarChar, 250, "Nature");
                                   updateCommand.Parameters.Add("@dept", SqlDbType.VarChar, 250, "dept");
                    updateCommand.Parameters.Add("@origine", SqlDbType.VarChar, 250, "origine");
                }

  2. #2
    Membre averti
    Inscrit en
    Février 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 26
    Par défaut
    Devrais-je creer un objet pour chaque colonne?

  3. #3
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 184
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 184
    Par défaut
    Bonjour.

    Pourquoi ne pas créer un procédure qui prend en paramétre une commande et id_pays et qui se charge d'ajouter les paramétres de la requête à cette commande ?

    Cdt.

  4. #4
    Membre averti
    Inscrit en
    Février 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 26
    Par défaut
    Bonjour,
    Merci pour ta réponse, tu veux dire que je devrais créer une procédure stockée pour effectuer ce traitement, j'aurais donc la meme chose mais du coté de la base de donnée.
    Certe on y verrait plus claire.
    Si c'est bien ce que tu voulais dire, biensure.

  5. #5
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 184
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 184
    Par défaut
    Bonjour.

    Citation Envoyé par pascal_70 Voir le message
    Si c'est bien ce que tu voulais dire, biensure.
    Non, je parlais d'une void et pas d'une proc stockée !

    Cdt.

  6. #6
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Juste en passant, ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if (id_pays.Equals("4"))
    // cas 1 
                else if (id_pays.Equals("5"))
    // cas 2
                else if (id_pays.Equals("1"))
    // cas 3
                else if (id_pays != "5")
    // cas 4
                else
    // cas 5
    je le verrais pas mal mieux comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    switch(id_pays)
    case "4":
    // cas 1 
        break;
    case "5":
    // cas 2
        break;
    case "1":
    // cas 3
        break;
    default:
    // cas 4 et 5 (on a deja teste id_pays != "5") 
         break;
    Deuxieme conseil, si tu fais des tests sur 1, 4, et 5, tu vqs te compliquer la maintenance, remplace tes valeurs magiques par une constante qui a du sens pour ton appli

    je vois pas comment créer un seuk blok voir moins.
    voire moins ? 0 blocs de code ?

    Sinon, si la logique de tes commande est identique, tu peux diminuer ton nombre de ligne facilement...

    tu ajoutes une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<DbParameter> param = new List<DbParameter>();
    tu reprends ton code, mais tu fais un Add de ton parametre dans params a chaque fois...

    et a la fin de ta fonction, tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    insertCommand.Parameters.AddRange(param.ToArray());
    updateCommand.Parameters.AddRange(param.ToArray());

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

Discussions similaires

  1. Optimisation de votre SGBDR et de vos requêtes...
    Par SQLpro dans le forum Langage SQL
    Réponses: 35
    Dernier message: 11/01/2013, 11h49
  2. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 4
    Dernier message: 05/02/2003, 08h54
  3. [VB6] [BDD] Optimisation de l'accès aux données
    Par LadyArwen dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 30/01/2003, 13h27
  4. [langage]Problème de temps de lecture, optimisation
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 08/01/2003, 08h47
  5. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 10h24

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