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 :

Connexion à divers SGBD


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Connexion à divers SGBD
    Bonjour

    Je dois développer une application (.NET 3) qui doit pouvoir se connecter à plusieurs SGBD différent (selon le choix de l'utilisateur).

    Mon problème : Que dois-je utiliser pour gérer la connexion, les requêtes, ... ? Le but est bien entendu d'éviter de devoir écrire du code à double.

    J'ai entendu parler de LINQ, mais est-ce adapté à ce que je souhaite faire, est-ce suffisamment stable ?

  2. #2
    Membre chevronné
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 288
    Par défaut
    Regarde du coté de ADO.NET

    Cela te permet de te connecter à des bases de données en modifiant la chaine de connexion

    http://dotnet.developpez.com/cours/ado.net/

  3. #3
    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
    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

  4. #4
    Membre expérimenté
    Inscrit en
    Janvier 2005
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 218
    Par défaut
    Si tu as plus de temps, tu peux creuser sur l'Entreprise Library et le DaaB

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Super.

    J'ai essayé mais je n'y arrive pas. Dans mon cas je dois accéder à une base MySQL et FireBird. Que dois-je passer à la méthode GetFactory ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DbProviderFactory factory = DbProviderFactories.GetFactory("???");

    J'ai fait un essai qui me permet de vérifier que mes bases soient accessible mais pour le reste, je nage.

    le script en 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
    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
    using System;
    using System.Collections.Generic;
    using System.Text;
    using MySql.Data.MySqlClient;
    using FirebirdSql.Data.FirebirdClient;
     
    namespace testDB
    {
        class Program
        {
            static void Main(string[] args)
            {
                Program.mysqlTest();
                Program.firbirdTest();
     
                Console.Write("\nPress enter to quit");
                Console.ReadLine();
            }
     
            static void firbirdTest()
            {
                string ConnectionStr = "data source=localhost;initial catalog=c:/TEST.FDB;user id=julien;password=qay;dialect=3";
     
                FbConnection Connection = new FbConnection();
                Connection.ConnectionString = ConnectionStr;
                Connection.Open();
     
                Connection.Close();
                Console.Write("Firebird OK\n");
            }
     
            static void mysqlTest()
            {
                string ConnnectionStr = "Database=croa;Data Source=localhost;User Id=julien;Password=qay";
     
                MySqlConnection Connection = new MySqlConnection();
                Connection.ConnectionString = ConnnectionStr;
     
                Connection.Close();
                Console.Write("MySql OK\n");
            }
        }
    }
    Merci d'avance pour votre aide.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2007
    Messages : 180
    Par défaut
    Salut,

    tu peux aussi essayé les pilotes ODBC et OLE DB. Bon, c'est moins dans le vent, vu que Microsoft a sorti ADO.NET en amélioration. N'empêche que pour une petite utilisation des bases, je suis parti sur l'ODBC qui peut être intéressant.

    Pour l'ODBC, il faut télécharger un pilote :
    mysql-connector-odbc-5.00.11-beta-gpl-win32
    Dispo sur le site MySQL
    Pour FireBird, jamais utilisé mais ça doit exister.

    Ensuite voilà la chaîne de connexion que j'ai utilisé:
    ConnectionString = "Driver={MySQL Connector/ODBC v5};Server=localhost;Database=nom;UID=XXX;Pwd=XXX"

    Pour Firebird, tu as des infos sur http://www.connectionstrings.com/

    Pour rendre paramétrable ça, je vais dans la base de registre pour récupérer le nom des drivers (bibliothèque Microsoft.Win32), après tu fais le tri pour garder les 2, ou tu peux aussi les écrire en dur.

    Sous OLE DB:
    Provider=MySQLProv;Server=localhost;Data Source=nom;User Id=XXX;Password=XXX
    J'ai aussi téléchargé un OLEDB pour Mysql.

    Je ne marque pas que c'est le mieux ou le plus efficace, mais je peux me connecter sur MySQL, SQL SERVER, Oracle (j'ai testé que c 3), comme je veux et sans changer les requêtes.
    Ca évite aussi d'appeler des bibliothéques MySQL.Data... et d'avoir une méthode par connexion.

    ça répond à ta demande, mais ce n'est pas forcément le plus efficace et le plus performant.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Je progresse.

    J'ai trouvé un exemple ici : http://slashhome.fr.nf/index.php?pos...es-decouvertes

    J'ai tenté de l'appliquer mais sur le getFactory, une exception est levée. Le message est

    Le fournisseur de données .Net Framework demandé est introuvable. Il n'est peut-être pas installé.
    pourtant la DLL Mysql.data.dll est bien référencée dans le projet.

  8. #8
    Invité
    Invité(e)
    Par défaut
    J'ai tenté l'option ODBC et je suis parvenu à établir une connexion. Par contre, pour les driver, j'ai été obligé d'utiliser les exe d'installation. Je voulais utiliser la version .zip et copier les dll dans le répertoire de mon application mais ça n'a pas l'air de fonctionner.

    Et si quelqu'un à une idée concernant mon problème avec ADO.NET merci de le signaler.

  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
    Par défaut
    Citation Envoyé par JuTs Voir le message
    Je progresse.

    J'ai trouvé un exemple ici : http://slashhome.fr.nf/index.php?pos...es-decouvertes

    J'ai tenté de l'appliquer mais sur le getFactory, une exception est levée. Le message est



    pourtant la DLL Mysql.data.dll est bien référencée dans le projet.
    Il me semble que le provider doit être ajouté dans le fichier machine.config.
    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

Discussions similaires

  1. [Vxi3] Connexion au sgbd HyperFileSQL à l'aide l'OLE DB
    Par renelou dans le forum Designer
    Réponses: 7
    Dernier message: 14/06/2011, 15h29
  2. FActory avec connexion multiple SGBD
    Par tortuegenie dans le forum ASP.NET
    Réponses: 3
    Dernier message: 07/12/2007, 11h01
  3. Réponses: 1
    Dernier message: 30/03/2007, 14h10
  4. [Forms] et l'interrogation de divers SGBD
    Par Banks dans le forum Forms
    Réponses: 9
    Dernier message: 22/02/2007, 00h41
  5. [débutant] Connexion à un SGBD distant avec ODBC
    Par Thor Tillas dans le forum Access
    Réponses: 4
    Dernier message: 11/01/2007, 08h31

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