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 :

C# - Bases de données


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 71
    Par défaut C# - Bases de données
    Bonjour,

    Je ne suis pas sur de ce que j'avance, mais Visual Studio propose un connecteur OLEDB pour se connecter aux différentes bases de données.

    Je dois me connecter à une première base de données Oracle, et une seconde base de données MySql qui tourne sur un Wamp Server. Est-il préférable d'utiliser le client Oracle et le client MySql pour me connecter aux bases de données ou alors d'utiliser le connecter OLEDB intégré à Visual Studio?

    Autre question, pensez-vous qu'il est préférable d'utiliser Microsoft SQL Server ou le MySql que j'utilise actuellement sur Wamp Server (quand à Oracle, elle m'est imposée, je n'ai pas le choix)?

    Merci.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    OleDB est une vieille techno, et les connections aux BDD avec OleDB ne sont pas très optimisées. Il vaut toujours mieux utiliser le connecteur spécifique quand il existe.

    Pour ta 2e question, personnellement je choisirais plutôt SQL Server car il s'intègre mieux avec .NET et Visual Studio, et supporte Linq to SQL et Entity Framework. Mais évidemment c'est plus cher, sauf si tu peux te contenter de la version Express

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 198
    Par défaut
    Tu le sais peut-être mais n'oublie pas de rendre ton modèle indépendant du type de base de donnée que tu utilises. Vu que tu hésites, il se pourrait que tu change d'avis en cours de route.

    Il y a un tutoriel sur developpez très bien à ce sujet.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par AsPrO Voir le message
    Il y a un tutoriel sur developpez très bien à ce sujet.
    Si tu lui mettais le lien ça irait plus vite je pense

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 71
    Par défaut
    Merci tomlev!

    Oui je suis très intéressé par ça AsPrO, si tu pouvais me donner le lien ce serait cool

    En ce qui concerne Microsoft SQL Server, je l'ai gratuitement car comme je fais un master en informatique, avec mon matricule étudiant j'ai accès à la plupart des logiciels Microsoft gratuitement via MSDN.

    Par contre, j'ai réalisé le code pour les connexions avec les clients respectifs pour les bases de données, je n'utilise pas de DataSet, et je n'utilise pas l'utilitaire de connexion fourni dans Visual Studio (en cliquant sur l'onglet Données, Ajouter une source de données, ...)

    Voici mon code (tout bête, ce sont des tests pour pouvoir commencer mon projet) :

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    static void Main(string[] args)
            {
     
    //-------------------------------ORACLE 10G XE---------------------------------------------------------
     
                string Ochaine = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.3)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XE)));User Id=Damien;Password=Damien;Connection Lifetime=120;Persist Security Info=False;";
                OracleConnection OConnexion = new OracleConnection();
                OConnexion.ConnectionString = Ochaine;
     
                try
                {
                    OConnexion.Open();
                    Console.WriteLine("Connexion Oracle ouverte");
     
                    OracleCommand query = new OracleCommand();
     
                    query.Connection = OConnexion;
                    query.CommandText = "SELECT * FROM etudiant";
     
                    OracleDataReader reader;
                    reader = query.ExecuteReader();
     
                    while (reader.Read())
                    {
                        Console.WriteLine(reader[0].ToString());
                    }
     
                    OConnexion.Close();
                    Console.WriteLine("Connexion Oracle fermée");
                }
                catch(Exception e)
                {
                    Console.WriteLine(e);
                }
     
                Console.WriteLine("");
     
    //---------------------------MySql---------------------------------------------
     
                string Pchaine = "Server=192.168.0.3;Database=test;Uid=Dam;Pwd=Dam;";
                MySqlConnection Pconnexion = new MySqlConnection();
                Pconnexion.ConnectionString = Pchaine;
     
                try
                {
                    Pconnexion.Open();
                    Console.WriteLine("Connexion MySql ouverte");
     
                    MySqlCommand cmd = Pconnexion.CreateCommand();
                    MySqlDataReader reader;
                    cmd.CommandText = "SELECT * FROM essai";
     
                    reader = cmd.ExecuteReader();
                    while(reader.Read())
                    {
                        Console.WriteLine(reader[0].ToString());
                    }
     
                    Pconnexion.Close();
                    Console.WriteLine("Connexion MySql fermée");
                }
                catch(Exception e)
                {
                    Console.WriteLine(e);
                }
            }
    Pensez-vous que c'est correct (le code fonctionne parfaitement) ou qu'il est préférable d'utiliser un DataSet lié à une source de données (et donc je suppose passer par l'utilitaire de Visual Studio pour ajouter une source de données)?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je pense qu'il parle de ce tuto.

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    il n'y a pas de bonne ou de mauvaise manière de te connecter à une base de données pour ta question.

    Utiliser les DataSet ou pas, relève plutôt de l'accommodation personnelle plus qu'autre chose, personnellement les DataSet se sont toujours résumé pour moi à récupérer les résultats de mes procédures stockées, et ce jusqu'à ce que j'emploie un ORM.

    en revanche effectivement il vaut mieux utiliser les connecteurs spécifiques, et mysql dispose de son propre connecteur qui implante Entity Framework également.
    cependant il vaut mieux utiliser SQL Server avec dotnet.

    pour ce qui est de Oracle, bien il n'y a plus/pas de prise en charge native, et les connecteurs, y compris payants sont tous merdiques, et incomplets.

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par AsPrO Voir le message
    Il y a un tutoriel sur developpez très bien à ce sujet.
    Citation Envoyé par h2s84 Voir le message
    Je pense qu'il parle de ce tuto.
    Je pense qu'il s'agit plutôt de celui-ci, à lire absolument

    Citation Envoyé par AsPrO Voir le message
    Tu le sais peut-être mais n'oublie pas de rendre ton modèle indépendant du type de base de donnée que tu utilises. Vu que tu hésites, il se pourrait que tu change d'avis en cours de route.
    Dans le principe, je suis tout à fait d'accord... Après, il faut voir qu'en pratique il est très difficile de rendre le code vraiment indépendant de la base utilisée, car chaque SGBD a ses caractéristiques propres, et le langage SQL n'est malheureusement pas complètement standardisé...

    Cela dit, c'est vrai qu'utiliser la couche d'abstraction d'ADO.NET peut nettement faciliter le travail pour changer de SGBD

    Citation Envoyé par rousseau_damien Voir le message
    Pensez-vous que c'est correct (le code fonctionne parfaitement) ou qu'il est préférable d'utiliser un DataSet lié à une source de données (et donc je suppose passer par l'utilitaire de Visual Studio pour ajouter une source de données)?
    Les datasets ont leurs avantages et leurs inconvénients... si tu es débutant, je te conseille plutôt de faire sans, ça te permettra de mieux comprendre ce qui se passe vraiment. Je vois beaucoup de débutants qui ne savent rien faire sans les datasets et qui ne comprennent pas vraiment ce qu'ils font quand ils les utilisent...

    Sinon il y a une autre option intéressante, c'est d'utiliser un ORM comme Entity Framework ou Linq to SQL. Linq to SQL est un peu plus facile mais aussi beaucoup plus limité, et il ne fonctionne qu'avec SQL Server. EF est plus complexe, mais offre beaucoup plus de souplesse et permet en théorie de fonctionner avec n'importe quelle SGBDR, à condition qu'il y ait un provider compatible EF.

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    et si un jour EF te semble trop limité, pas assez souple, tu sera mieux armé pour appréhender NHibernate

    enfin bon à part pour des projets spécifiques globalement Entity Framework rempli très bien son office...

    mais je suis d'accord avec tomlev, dans un premier temps fait sans DataSet.
    personnellement je ne les ai jamais vu que comme des tableaux de stockage de données résultant de diverses requêtes, souvent des procédures stockées.

    et quand tu te sera bien fait les dents, envisage le passage à un ORM comme Entity Framework.
    Une seule restriction cependant pour l'instant, il n'y à pas de connecteur Oracle avec une implémentation des providers EF. Même les payants sont soit incomplet, soit n'ont carrément pas le support, soit ne fonctionnent pas, soit on une espèce de modèle hybride qui au final ne sert à rien.
    Oracle a débuté l'implémentation d'un vrai connecteur dotnet-Oracle, pour palier à ce gros problème, car c'est pratiquement la seule vraie DB actuellement qui ne dispose pas d'au moins un connecteur qui intègre un provider EF.

    par vraie DB, j'entend DB "fortement utilisée" actuellement, et qui évolue, pas certaines bases comme j'en est encore vu une pour une appli qui se vend 100 000€, et qui tiens plus de l'antiquité qu'autre chose.

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par cinemania Voir le message
    et si un jour EF te semble trop limité, pas assez souple, tu sera mieux armé pour appréhender NHibernate
    Perso je trouve que NHibernate apporte surtout beaucoup de prise de tête par rapport à EF... Je bosse avec tous les jours et j'en fais des cauchemars

    En plus y a même pas une doc de référence, la doc officielle c'est juste une (très longue) page HTML avec du blabla. Je trouve ça dingue qu'un ORM aussi largement utilisé ait pas une vraie documentation

    Citation Envoyé par cinemania Voir le message
    Oracle a débuté l'implémentation d'un vrai connecteur dotnet-Oracle, pour palier à ce gros problème, car c'est pratiquement la seule vraie DB actuellement qui ne dispose pas d'au moins un connecteur qui intègre un provider EF.
    Oui j'ai vu ça y a quelques mois, c'est une bonne nouvelle. C'est juste dommage qu'ils s'y prennent avec 2 ans de retard

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 198
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Je pense qu'il s'agit plutôt de celui-ci, à lire absolument
    C'est bien celui là, je ne voulais pas prendre la peine de chercher avant d'être sur que ça l'intéresse et pour finir tu as été plus rapide que moi

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 71
    Par défaut
    Super, merci pour toutes ces réponses.

    Si j'ai bien compris, si je veux utiliser un ORM parmis ceux que vous avez cité, je n'ai pas le choix de prendre autre chose que NHibernate car il n'y a pas de connecteur Oracle avec Entity Framework et Linq to SQL ne fonctionne qu'avec Sql Server...

    Pour en revenir au fait que j'ai Microsoft Sql Server gratuitement avec mon matricule étudiant, je me suis renseigné et vu que mon TFE va être exploité pendant x années par l'école, il est préférable que je prenne alors le Sql Server Express par soucis de licence...Est-il bridé par rapport au Sql Server? Est-ce que c'est alors mieux que j'utilise le MySql de Wamp Server?

  13. #13
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    sql server express est bridé par rapport à une standard ou fortiori une developper edition, mais tout est affaire de besoin...

    voici les limitations principales imposées par sql server express :
    - base de données de 10Go max sur sql server 2008R2.
    - pas de clustering
    - pas de réplication
    - 1 instance unique par machine

    il y en a d'autres, mais on va dire qu'elles sont plus du genre licencing qu'autre chose.

    en plus je ne vois pas pourquoi l'école se permettrait et surtout de quel droit elle utiliserait tes licences uniques et personnelles pour son usage...
    si tel est le cas, ton école est en total violation des conventions et usage des licencing microsoft.
    tu as accès à ces softs et donc à cette licence TEMPS QUE tu es étudiant.
    nota à moins que tes camarades n'aient le même numéro de licence, il est personnel... (pas comme les serial msdn qui sont uniques et pour tout le monde les mêmes)

    pour info, les écoles, administrations et autres, ont les licences pour pratiquement rien pour les versions standards ils n'ont pas besoin de tes licences... elles sont pour toi, pas pour quelqu'un d'autre... sinon il n'y a plus aucun intérêt à ce modèle de licencing.

    par conséquent tes productions pendant ta période scolaire peuvent être développées avec des outils qui sont soumises à ces licences.
    après tout, si tes productions perdurent après tes études, il sera toujours temps d'envisager des solutions avec des licences normales.
    dans le cadre d'un projet, il n'y a aucun problème à installer ton SQL Server chez toi... pour développer.

    l'application n'est nullement attachée à une licence d'outil, comme une licence VS ou une licence SQL Server.
    d'ailleurs lors de vente de produits dépendant de ces systèmes, l'achat de licence pour sql server entre autre, est généralement facturé à part, quand le client n'en dispose pas, car cela ne fait pas partie intégrante du produit.

    EF tu peux l'utiliser pour SQL Server.
    effectivement pour Oracle pour l'instant pas le choix, il faut utiliser NHibernate.
    Oracle avait annoncé la sortie de son connecteur pour le début 2011... mais bon, qui vivra verra, car personnellement je ne me fie à aucune annonce Oracle, souvent très en écartés de la réalité.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 71
    Par défaut
    Ok merci

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

Discussions similaires

  1. Problème Base de données et CRecordSet
    Par LE CHAKAL dans le forum MFC
    Réponses: 3
    Dernier message: 20/08/2002, 11h59
  2. connexion base de donné
    Par saidi dans le forum MFC
    Réponses: 3
    Dernier message: 07/08/2002, 22h22
  3. [Concept] Stabilité d'une base de donnée
    Par lassmust dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/07/2002, 16h16
  4. Bases de données
    Par dev dans le forum C++Builder
    Réponses: 4
    Dernier message: 01/07/2002, 22h55
  5. associer une base de données(access) a un dbgrid
    Par ange1708 dans le forum MFC
    Réponses: 3
    Dernier message: 11/06/2002, 12h18

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