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

ADO.NET Discussion :

Base de données sur un DVD


Sujet :

ADO.NET

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 31
    Points
    31
    Par défaut Base de données sur un DVD
    Bonjour,

    je poste un nouveau sujet car celui-ci est différent de l'ancien (même s'ils peuvent se ressembler).

    J'ai donc une application c# avec une base de données SQL Server Compact qui fonctionne très bien. Je peux la mettre sur une clé USB et l'utiliser sur n'importe quel pc.
    Le soucis c'est que j'aimerais changer de support et la mettre sur un DVD, j'ai donc essayé mais j'ai un gros problème auquel je n'avais pas pensé car je n'avais jamais graver d'application sur un DVD.

    L'accès au fichier de la base de données m'est refusé parce que je suis sur un DVD donc accès en lecture seule.
    Il faut peut-être graver les fichiers différemment ?

    Ainsi ça remet tout mon projet en question: puis-je utiliser une base de données (légère SQL Server Compact) dans laquelle je n'effectue logiquement que des "select" sur un support DVD ?

    Éventuellement un fichier Excel? Même si cette dernière solution ne m'arrange pas du tout.

    Si vous avez une idée pour faire marcher ma BDD SQL Server Compact sur un DVD pouvez-vous m'aider s'il vous plait ?

    Merci encore pour votre générosité.

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Etrange besoin , mais pourquoi pas

    Ce lien te mettra peut-être sur la voie : http://erikej.blogspot.fr/2009/08/ru...-rom-read.html

    Pour CE 3.5 SP2 voir le commentaire d'ErikEJ à la fin.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Merci DotNetMatt.

    Je dois t'avouer que je n'ai pas tout saisi.

    La première partie concerne les packages pour pouvoir se servir d'une bdd SQL Server Compact sur un ordi ne disposant pas d'SQL Server Compact.
    ça c'est bon, je peux exécuter mon appli sur n'importe quel pc à partir d'une clé USB.

    La deuxième partie m'intéresse beaucoup plus en revanche:
    D'après ce que j'ai compris au moment de l'exécution on recréer tous les index, en lecture seule ce n'est pas possible du coup j'ai le message d'erreur.

    Par contre pour la solution je suis assez larguer:
    il faut créer 2 SDF?
    Ajouter 2 paramètres au ConnectionString ?

    Merci de m'éclairer

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Stuckly Voir le message
    La deuxième partie m'intéresse beaucoup plus en revanche:
    D'après ce que j'ai compris au moment de l'exécution on recréer tous les index, en lecture seule ce n'est pas possible du coup j'ai le message d'erreur.
    Oui c'est ça.

    Citation Envoyé par Stuckly Voir le message
    Par contre pour la solution je suis assez larguer:
    il faut créer 2 SDF?
    Ajouter 2 paramètres au ConnectionString ?
    Il faut rajouter “Mode=Read Only” et “Temp Path=<path>” dans ta chaîne de connexion (<path> étant un chemin temporaire sur le disque dur de l'ordinateur cible, tu peux utiliser "%TEMP%" qui sera automatiquement remplacé par le chemin temporaire utilisé par Windows dans les variables d'environnement).

    La solution des deux fichiers .SDF n'est utile que lorsque tu as créé une base sous un environnement Vista/Server 2008 et que tu l'utilises ensuite sous un environnement XP/Server 2003. Donc ça ne s'applique pas dans ton cas, enfin pas au vu des détails que tu as donné.

    En principe la modification de la connection string devrait suffire.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Ça à l'air de fonctionner

    Mais j'ai effectué le test avec mes fichiers sur mon pc en local (que j'ai mis manuellement en lecture seule) et apparemment ça passe.

    Donc avant de crier victoire trop vite (et de mettre le topic en résolu) il faut que je teste en gravant mes fichiers sur un DVD (ce que je ne peux pas faire avant ce soir), je reviendrais pour te tenir au courant.

    Merci beaucoup.

    PS: si j'ai bien compris le fichier temp va recevoir toutes les données nouvellement créées ? A la place du dossier de la bdd.

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Stuckly Voir le message
    Donc avant de crier victoire trop vite (et de mettre le topic en résolu) il faut que je teste en gravant mes fichiers sur un DVD (ce que je ne peux pas faire avant ce soir), je reviendrais pour te tenir au courant.
    Ok je suis curieux de connaître le résultat

    Citation Envoyé par Stuckly Voir le message
    PS: si j'ai bien compris le fichier temp va recevoir toutes les données nouvellement créées ? A la place du dossier de la bdd.
    Ben comme ta base est en lecture seule, mais que le "moteur" CE doit avoir besoin d'écrire des choses, il a besoin d'avoir un endroit où le faire. Il va donc créer une base temporaire dans le Temp Path afin de pouvoir travailler normalement, sans être contraint par le mode read only.

    [EDIT] D'après la librairie MSDN, CE aurait besoin d'une TempDB comme n'importe quelle version de SQL Server, notamment pour les opérations ORDER BY, GROUP BY et DISTINCT. S'il n'est pas spécifié au démarrage, CE essaiera par défaut d'utiliser le même dossier que celui de la base, or comme elle sera sur un DVD, CE n'arrivera pas à écrire le fichier temporaire. Donc tu te prendras une exception... (référence : http://msdn.microsoft.com/fr-fr/libr...=sql.105).aspx)
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Merci pour ton explication claire.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    ça fonctionne !!!

    Merci 1 000 fois pour ton aide précieuse.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Je reviens ici car je me suis aperçu d'un léger problème. Rien de dramatique mais c'est quelque peu gênant.

    Je n'arrive pas à utiliser mon DVD sur Windows XP alors que sur 7 ça marche très bien.

    "The database is opened with a read-only connection. Can't perform post-initialization operations like re-building indexes and upgrading public tracking. Please re-open with a read-write connection [Database name = ... ]"

    Faut-il faire quelque chose de plus pour Windows XP ?

    Merci, une fois de plus.

  10. #10
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Le problème que tu mentionnes est connu et est abordé dans le premier lien que j'ai posté ici. L'explication complète est disponible ici.

    Une solution possible (celle qui est indiquée par le premier lien que j'ai posté ici), est de créer une fois le fichier SDF sous Windows 7, puis de le refaire sous Windows XP. Les deux fichiers peuvent ensuite être mis sur le support en lecture seule. Enfin, il revient à l'application de détecter l'environnement pour utiliser la base de données adaptée.

    Je te l'accorde ce n'est pas la solution du siècle, mais je pense que c'est la meilleure solution si tu dois gérer ces deux environnements.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Ah oui au temps pour moi ça m'étais complètement sortit de la tête.

    Petite question, dans les divers liens on parle du passage de 7 à XP, mais si je passe de 7 à 8 j'aurais un problème? Qui peut le plus peut le moins non?

    Merci, t'assures.

    EDIT => si je créer une seconde base de données, comment je peux faire pour changer le chemin d'accès à la base sachant que celui-ci s'est créé automatiquement ?

  12. #12
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Je viens de tester avec windows 8 et malheureusement ça ne fonctionne pas. ça ça me dérange beaucoup plus ... parce qu'effectivement qu'une ancienne version ne soit pas compatible nous incitera à nous mettre à jour. Mais qu'une nouvelle version ne fonctionne pas c'est bien plus dérangeant.

    Du coup va falloir que je fasse une version Windows 8. Mais je ne comprends pas comment je dois faire pour changer le chemin de la base de données ? Et l'adapter à la configuration du poste.

    Merci d'avance.

  13. #13
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    J'ai bien compris le principe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     if (System.Environment.OSVersion.Version.Major < 6)
        {
            // This SDF was created on XP or Win2003
            sdfName = "Northwind5.sdf";
        }
        else
        {
            // This SDF was created on Vista or Win7
            sdfName = "Northwind.sdf";
        }
    Mais comment setter le connectionString ?

    EDIT=> dans cette phrase
    The sample code below illustrates how you could implement the 2 paragraphs above when creating your connection string. In addition, the path to the SDF file is dynamically created.
    Le soucis est que mon connection String je ne le créer jamais dans mon programme. Le seul endroit où j'interviens c'est dans les paramètres de l'application.


    EDIT 2 => Je viens de voir ici qu'on ne parle en aucun cas de Windows 8 dans les System Requirements ... http://www.microsoft.com/en-us/downl....aspx?id=30709

    Donc en clair impossible de faire une base de données Windows 8, et donc impossible que mon application fonctionne sous Windows 8?


  14. #14
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Stuckly Voir le message
    EDIT 2 => Je viens de voir ici qu'on ne parle en aucun cas de Windows 8 dans les System Requirements ... http://www.microsoft.com/en-us/downl....aspx?id=30709
    Effectivement car CE 4.0 est sorti avant l'arrivée de Windows 8 Mais rassure-toi il n'y a pas de problème pour l'utiliser sous cet OS. Logiquement, la valeur de System.Environment.OSVersion.Version.Major doit être égale à 8 quand tu es sous Windows 8 (à vérifier, mais ça semble logique). Donc par rapport au dernier code que tu as posté, tu vas passer dans le ELSE du IF (This SDF was created on Vista or Win7).

    Citation Envoyé par Stuckly Voir le message
    Donc en clair impossible de faire une base de données Windows 8, et donc impossible que mon application fonctionne sous Windows 8?
    Si, c'est possible tant que tu restes en mode "bureau" (vs. le mode "Metro"). En effet en mode Metro, l'API ne supporte pas CE.

    Citation Envoyé par Stuckly Voir le message
    Le soucis est que mon connection String je ne le créer jamais dans mon programme. Le seul endroit où j'interviens c'est dans les paramètres de l'application.
    Dans le premier lien, l'auteur construit sa ConnectionString dynamiquement dans la variable connStr. Il faut donc que tu te bases sur ce qu'il a fait afin de pouvoir définir le chemin de la DB.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  15. #15
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Effectivement car CE 4.0 est sorti avant l'arrivée de Windows 8 Mais rassure-toi il n'y a pas de problème pour l'utiliser sous cet OS. Logiquement, la valeur de System.Environment.OSVersion.Version.Major doit être égale à 8 quand tu es sous Windows 8 (à vérifier, mais ça semble logique). Donc par rapport au dernier code que tu as posté, tu vas passer dans le ELSE du IF (This SDF was created on Vista or Win7).
    Je verrais ce qu'il en est pour la version, j'avais aussi directement pensé à 8.

    Si, c'est possible tant que tu restes en mode "bureau" (vs. le mode "Metro"). En effet en mode Metro, l'API ne supporte pas CE.
    Désolé, je suis perdu avec windows 8... comment passer en mode bureau?

    Dans le premier lien, l'auteur construit sa ConnectionString dynamiquement dans la variable connStr. Il faut donc que tu te bases sur ce qu'il a fait afin de pouvoir définir le chemin de la DB.
    J'ai compris qu'il générait en effet les informations de manière automatique, selon les informations de l'OS. Je me suis sans doute mal exprimé, mais ce que je ne comprends pas c'est comment dire à l'application que la connexion doit se faire à partir de la chaîne connStr que l'on a généré ?

    En gros une sorte de "DVD.Properties.connectionString= connStr;" ?


    Merci pour tout le temps que tu m'as déjà consacré (et je l'espère que tu me consacreras encore un peu plus ). ça m'a déjà servit à bien mieux comprendre certains aspects de la programmation

  16. #16
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Stuckly Voir le message
    Désolé, je suis perdu avec windows 8... comment passer en mode bureau?
    J'ai dû mal m'exprimer, je parlais d'une application Windows classique

    Citation Envoyé par Stuckly Voir le message
    comment dire à l'application que la connexion doit se faire à partir de la chaîne connStr que l'on a généré ?

    En gros une sorte de "DVD.Properties.connectionString= connStr;" ?
    Sur ton objet SqlCeConnection tu as une propriété ConnectionString. Il te suffit de lui assigner une valeur selon l'environnement. Exemple :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    using (var conn = new SqlCeConnection())
    {
        var sdfName = System.Environment.OSVersion.Version.Major < 6 ? "Northwind5.sdf" : "Northwind.sdf";
     
        var connStr = String.Format(@"Data Source = {0}\{1};Mode = Read Only;Temp Path={2}", 
                                    System.IO.Path.GetDirectoryName(System.Reflection. Assembly.GetExecutingAssembly().GetName().CodeBase),
                                    sdfName, 
                                    System.IO.Path.GetTempPath());
     
        conn.ConnectionString = connStr;
    }
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  17. #17
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Sur ton objet SqlCeConnection tu as une propriété ConnectionString. Il te suffit de lui assigner une valeur selon l'environnement. Exemple :
    Merci pour l'exemple ça m'a beaucoup servis. Au risque de dire n'importe quoi... le simple faire de faire ça est-il suffisant pour modifier la connexion à ma base de données ?

    J'ai dû mal m'exprimer, je parlais d'une application Windows classique
    J'ai installer ceci sur un Windows 8 : http://www.microsoft.com/fr-fr/downl....aspx?id=30709
    avec Visual Studio 2012 Express. Mais impossible de trouver comment créer une base de données .sdf... aucun exécutable sous SQL Server Compact, en passant par Visual Studio (avec lequel j'ai créer ma base sous Win7) je n'ai pas retrouvé mon onglet de création de base de données...
    Comment faire ?



    Merci encore.

  18. #18
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Stuckly Voir le message
    le simple faire de faire ça est-il suffisant pour modifier la connexion à ma base de données ?
    Ben là tu prends la main sur la connection string, donc oui. Tu peux la construire comme tu le souhaites, c'est ce qu'on fait dans l'exemple que j'ai mis avec le string.Format.

    Citation Envoyé par Stuckly Voir le message
    J'ai installer ceci sur un Windows 8 : http://www.microsoft.com/fr-fr/downl....aspx?id=30709
    avec Visual Studio 2012 Express. Mais impossible de trouver comment créer une base de données .sdf... aucun exécutable sous SQL Server Compact, en passant par Visual Studio (avec lequel j'ai créer ma base sous Win7) je n'ai pas retrouvé mon onglet de création de base de données...
    Comment faire ?
    Là comme ça je ne sais pas... J'essaierai de regarder chez moi durant le week-end, sauf si un autre membre te poste la réponse avant
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  19. #19
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Finalement c'est de ma faute. J'ai pas installé la version que j'aurais du.

    J'ai créer une base de données depuis Windows 8, je te tiens au courant pour la suite.

    EDIT=> J'ai effectuer un test sur Windows 8 et malheureusement ça ne passe pas (ça aurait été trop beau hein )

    Alors déjà la version System.Environment.OSVersion.Version.Major sur Windows 8 il me sort "6" , intriguant.
    Puis même en stipulant explicitement le nom de la base de données sous Windows 8 il me donne une erreur :
    Une exception de première chance de type 'System.Data.SqlServerCe.SqlException' s'est produite dans System.Data.SqlServerCe.dll

    pas très explicite comme erreur ... Je continue mes recherches et mes expériences


    EDIT2=> J'ai réussi à le faire marcher sous Windows 8, en mettant explicitement le nom de ma base de données. C'est donc mon changement de connexion qui ne fonctionne pas.

    Voici mon code actuel dans ma classe program de l'application Winform:
    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
    //MessageBox.Show(System.Environment.OSVersion.Version.Major.ToString());
                //on doit vérifier la version de l'OS de l'utilisateur afin d'adapter la base de données
                using (var conn = new SqlCeConnection())
                {
                    var sdfName = System.Environment.OSVersion.Version.Major >= 6 ? "Database8.sdf" : "Database.sdf";
     
                    var connStr = String.Format(@"Data Source = {0}\{1};Mode = Read Only;Temp Path={2}",System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase),sdfName,System.IO.Path.GetTempPath());
     
                    conn.ConnectionString = connStr;
     
                    // MessageBox.Show(connStr);
                }
     
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new accueil());
    ça me semble bizarre de ne pas intervenir ailleurs...

  20. #20
    Nouveau membre du Club
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    Bon mes recherches avances...

    Alors Windows 7 et 8 ont la même version Major mais pas la même Minor.

    Voici donc mon code actuel:
    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
     
    static class Program
        {
            /// <summary>
            /// Point d'entrée principal de l'application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                //on doit vérifier la version de l'OS de l'utilisateur afin d'adapter la base de données
                using (var conn = new SqlCeConnection())
                {
                     int major = Environment.OSVersion.Version.Major;
                    int minor = Environment.OSVersion.Version.Minor;
                     var sdfName="";
     
                    if ((major >= 6) && (minor >= 2))
                    {
                     // Windows 8
                         sdfName = "Database8.sdf";
                    }
                    else if ((major >= 6) && (minor == 1))
                    {
                     // Windows 7
                         sdfName = "Database.sdf";
                    }
     
                    var connStr = String.Format(@"Data Source = {0}\{1};Mode = Read Only;Temp Path={2}",System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase),sdfName,System.IO.Path.GetTempPath());
                    MessageBox.Show(conn.ToString());
                    MessageBox.Show(connStr);
                    conn.ConnectionString = connStr;
     
                    //MessageBox.Show(connStr);
                }
     
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new accueil());
            }
        }
    Mais une chose m'échappe. Je ne sais pas comment faire pour modifier ma connexion à la base de données...

    Je ne sais pas si je suis assez explicite. En gros dans mes paramètres de l'application (clic droit-> propriétés -> paramètres) j'ai un paramètre DatabaseConnectionString et c'est tout le temps lui que est utilisé et non mon connStr .

    Merci

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/03/2008, 17h52
  2. [MySQL] Connexions à 2 bases de données sur une même page
    Par guy2004 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 08/02/2006, 09h38
  3. [base de donnée] accée a la base de données sur eclipse
    Par khalidlyon dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 07/04/2005, 22h12
  4. Base de données sur cd-rom ?
    Par vitsec dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/05/2004, 18h07

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