none
[BDD] permettre l'interrogation de plusieurs type de base de données RRS feed

  • Question

  • Bonjour, voici mon problème :

    je suis entrain de créer un application qui doit tourner avec plusieurs type de base de données paramétrable par l'utilisateur final.

    il devra à terme pouvoir choisir à sa convenance MSSQL, MySQL, Oracle ...

    je ne connais pas ces paramètres de connexion (à l'utilisateur final). Est-il envisageable de pouvoir créer/ajouter dynamiquement la chaîne de connexion dans le fichier web.config? lorsque l'utilisateur en ajoute une?

    afin de pouvoir utiliser un "ConnectionstringSetting" pour généraliser mes appels à la base de données? comme par exemple sur ce lien : http://www.csharpfr.com/codes/CREER-APPLICATION-INDEPENDANTE-BASE-DONNEES_38140.aspx

    Merci d'avance pour vos réponses?

    lundi 25 février 2013 16:14

Réponses

  • Bonjour

    Un petit retour, svp?

    Merci


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.


    il semblerais que ce soit bien ce que je recherche du moins avec quelques recherche complémentaire j'ai pu modifier ce que je souhaitais maintenant, il ne me reste plus qu'à trouver toute les information dont la fonction donné en lien dans mon premier post à besoins et ce, suivant le type de DB un grand merci :)

    //ajoutez ce using :
    using System.Configuration;
    
    //[...]
    
    Configuration myConfiguration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
    ConnectionStringsSection mySectionCxString = (ConnectionStringsSection)myConfiguration.GetSection("connectionStrings");
    mySectionCxString.ConnectionStrings["CxString"].ConnectionString = mydbcx;
    myConfiguration.Save();

    • Modifié Brett'dah vendredi 1 mars 2013 13:16 ajout du code de modification
    • Marqué comme réponse Aurel Bera mercredi 6 mars 2013 07:21
    vendredi 1 mars 2013 13:12

Toutes les réponses

  • Bonjour

    Ici vous avez quelques détails sur le même sujet

    http://forums.asp.net/t/1261446.aspx/1

    C’est bien possible mais no recommandée.

    C’est très probable d’avoir besoin de supporter CRUD (Create, Read, Update, Delete  http://fr.wikipedia.org/wiki/CRUD).

    Pourquoi ne pas avoir une BD centrale qui va contenir les chaines de connexion vers autres DB ?  Je vois ça comme une solution plus élégante.

    En plus, pensez de ne pas utiliser des chaines de connexion vers DB, mais des liens vers des Web Services. Je vous dis ça  parce-que dans divers cas vous avez besoin de réécrire les requêtes selon le type de serveur. Le plus simple exemple c’est avec l’utilisation de la fonction isnull sous MS SQL, qui pour Oracle deviens nvl.

    Dans cette situation quand vous changez le type de connexion vous devez changer aussi la requête.

    Cordialement,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mardi 26 février 2013 08:57
  • Bonjour,

    Ici vous avez quelques détails sur le même sujet

    http://forums.asp.net/t/1261446.aspx/1

    C’est bien possible mais no recommandée.

    C'est bien de dire "pas recommandé", je l'ai lu sur beaucoup de sujets, mais préciser pourquoi c'est mieux ^^ surtout que dans mon cas, au premier lancement de l'application, il n'y a pas de base de données paramétrée dedans ;) je vais regarder cela merci en tout cas ;)

    C’est très probable d’avoir besoin de supporter CRUD (Create, Read, Update, Delete  http://fr.wikipedia.org/wiki/CRUD).

    Pourquoi ne pas avoir une BD centrale qui va contenir les chaines de connexion vers autres DB ?  Je vois ça comme une solution plus élégante.

    Parce que comme expliqué, je n'est pas de base de donnée embarquée (remarque un fichier xml ou binaire pourrais faire l'affaire... Mais ce n'ai pas web.config qui conviendrais? pourquoi ne l'utiliserais-je pas au lieu d'en créer un autre?

    En plus, pensez de ne pas utiliser des chaines de connexion vers DB, mais des liens vers des Web Services. Je vous dis ça  parce-que dans divers cas vous avez besoin de réécrire les requêtes selon le type de serveur. Le plus simple exemple c’est avec l’utilisation de la fonction isnull sous MS SQL, qui pour Oracle deviens nvl.

    Toutes les opérations CRUD je les prépare déjà auparavant, toutes mes requêtes étant paramétrées par des champs pré-remplis ou contrôlés.

     Je n'utilise pas pour le moment isnull; De plus je préfère l'utilisation du "dbnull" pour la lecture de ce qui me viens des bases ^^ (à moins que vous me parliez d'autre chose ^^)

    De plus, je ne fais pas de fonction vers mes bases, uniquement des select/ insert/ update  paramétré suivant un ID non null donc pour le moment le cas que vous me décrivez me semble pas problématique, mais peut-être plus tard en tout cas je le garde en tête merci ;)

    S'il y a de si grande différence que cela pour des requête simple j'aurais juste une fonction de formatage avant l'exécution de la requête...


    • Modifié Brett'dah vendredi 1 mars 2013 12:01
    vendredi 1 mars 2013 12:00
  • Bonjour

    Un petit retour, svp?

    Merci


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.


    il semblerais que ce soit bien ce que je recherche du moins avec quelques recherche complémentaire j'ai pu modifier ce que je souhaitais maintenant, il ne me reste plus qu'à trouver toute les information dont la fonction donné en lien dans mon premier post à besoins et ce, suivant le type de DB un grand merci :)

    //ajoutez ce using :
    using System.Configuration;
    
    //[...]
    
    Configuration myConfiguration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
    ConnectionStringsSection mySectionCxString = (ConnectionStringsSection)myConfiguration.GetSection("connectionStrings");
    mySectionCxString.ConnectionStrings["CxString"].ConnectionString = mydbcx;
    myConfiguration.Save();

    • Modifié Brett'dah vendredi 1 mars 2013 13:16 ajout du code de modification
    • Marqué comme réponse Aurel Bera mercredi 6 mars 2013 07:21
    vendredi 1 mars 2013 13:12
  • Bonjour

    Le plus grand problème c'est que le Web.config est limitée.

    Si vous avez besoin d’ajouter plusieurs paramètres pour une connexion, la solution ne sera pas très élégante.  

    L’exemple avec isnull, c’est justement un exemple.  On peut imaginer beaucoup des choses qui peuvent poser des problèmes si on essaye d’exécuter la même requête sur des divers serveurs.

    Pourrons-nous considérer le problème résolu ?

    Cordialement,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    lundi 4 mars 2013 09:44