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 :

Requête Sql Paramétrée [ Débutant ]


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 19
    Par défaut Requête Sql Paramétrée [ Débutant ]
    Bonsoir,

    j'aimerais bien pouvoir créer une requête paramètrée mais restant la plus indépendante possible, c'est-à-dire l'application que je fais actuellement est basé sur sql server mais pourra se retrouver un jour sur un server oracle.

    Voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
             MyRequest = "INSERT INTO [Customers] ( [Name],[Surname],[PhoneNumber],[GsmNumber]) VALUES (@Name,@Surname,@PhoneNumber,@GsmNumber)";
    
                Parent.SqlCmd.Parameters.Add(new DbParameter("@Name",DbType.StringFixedLength,25));
    ==> Erreur à ce niveau, je sais bien que je ne peux pas utiliser une instanciation de dbParameter mais quelqu'un pourrait peut etre m'aider à modifier cette ligne...vu que je dois rester le plus général possible, je ne vais pas utiliser "new sqlparameter("@Name",DbType.StringFixedLength,25));"

    Merci à tous

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Salut,

    tu peux te servir de la classe abstraite DbProviderFactory à laquelle tu assigneras une factory pour ton provider de données. Une fois ceci fait, ta factory te permet de recuperer des DbCommand, DbConnection, DbParameter etc ... sans te soucier du sous-jacent. Par exemple :

    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Windows.Forms;
    using System.Data.SQLite;
    using System.Data.Common;
     
    namespace WindowsFormsApplication1
    {
        static class Program
        {
            static DbProviderFactory m_dbFactory;
     
            static void Main()
            {
                InitDbProvider();
     
                // a partir d'ici le code est indepedant du provider
     
                using (DbConnection conn = m_dbFactory.CreateConnection())
                {
                    using (DbCommand comm = m_dbFactory.CreateCommand())
                    {
                        comm.CommandText = @"INSERT INTO [Customers] ( [Name],[Surname],[PhoneNumber],[GsmNumber]) VALUES (@Name,@Surname,@PhoneNumber,@GsmNumber)"; 
                        DbParameter param = m_dbFactory.CreateParameter();
                        param.ParameterName = "@Name";
                        param.DbType = System.Data.DbType.StringFixedLength;
                        comm.Parameters.Add(param);
     
                        // etc ...
                    }
                }
            }
     
            private static void InitDbProvider()
            {
                // On assigne suivant la base de données, ici SQLite ...
                m_dbFactory = new SQLiteFactory();
            }
        }
    }
    Pour aller plus loin, tu as cet article de la MSDN.

  3. #3
    Membre émérite Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Par défaut
    Ou encore utiliser l'interface IDbDataParameter.

  4. #4
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 19
    Par défaut
    Merci bien brave gens

    J'ai adopté la première solution de SirJulio qui fonctionne très bien

    Par hasard, on m'a parlé que ce serait plus simple si je faisais une procédure stockée qui ferait les requêtes paramétrées à ma place... est-ce vrai ?

  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
    Par défaut
    Non, tu devrais passer les paramètres de la même manière... ça ne change rien.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  6. #6
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 19
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Non, tu devrais passer les paramètres de la même manière... ça ne change rien.

    Merci bien

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

Discussions similaires

  1. Requête sql paramétrée en VBA
    Par loustic-31 dans le forum VBA Access
    Réponses: 3
    Dernier message: 19/12/2008, 19h30
  2. Requête SQL Paramétrée
    Par K-PAX dans le forum Bases de données
    Réponses: 5
    Dernier message: 30/06/2008, 21h39
  3. Requête SQL paramétrée
    Par looping dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/12/2007, 22h08
  4. Requête SQL paramètrée et passage de paramètres
    Par Andry dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/11/2007, 06h39
  5. Réponses: 4
    Dernier message: 17/02/2007, 15h11

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