none
Base de données sur un DVD RRS feed

  • Question

  • Bonjour à tous,

    J'ai une application C# avec une base de données SQL Server Compact avec un accès aux données par ADO. J'ai réalisé mon application sur Windows 7 et je l'ai gravé sur un DVD. Elle fonctionne parfaitement... uniquement sur les postes Windows 7 !

    J'ai donc fait quelques recherches et je me suis aperçu qu'il y avait une solution à ce problème c'est de créer la base de données sur toutes les versions de l'OS...

    Je suis alors tombé sur ce topic: http://stackoverflow.com/questions/11927558/does-the-windows-8-sdk-support-sql-server-compact-edition

    SQL Server COmpact Edition n'existe pas pour Windows 8 ?

    Je viens tout de même ici, désespéré afin d'avoir pourquoi pas une solution ...

    Merci pour votre attention et bonne journée.


    • Modifié Stuckly vendredi 21 juin 2013 11:39
    vendredi 21 juin 2013 10:18

Réponses

Toutes les réponses

  • Bonjour,

    "créer la base de données sur toutes les versions de l'OS" ? Je ne vois pas très bien ce que vous voulez dire.

    A priori la discussion que vous avez trouvé ne s'applique qu'aux applications "Windows Store".

    Le mieux serait sans doute de commencer par indiquer le problème exact que vous constatez (message d'erreur ?). Cela pourrait aussi ne pas être lié directement à cela (je pense par exemple à une appli qui fonctionnerait en 32 bits mais pas en 64 bits).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    vendredi 21 juin 2013 17:15
  • Tout d'abord merci pour votre réponse.

    Effectivement, je me suis aperçu plus tard que c'était pas pour Windows 8 en lui même... j'avoue que Windows 8 me perd un peu ...

    Le problème est que j'ai le message suivant quand j'essaye de lancer mon application:

    "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 = ... ]"

    Je me suis aperçu que ce problème ne survenait que lorsque je le lançais sur un autre OS (XP ou 8), j'ai alors cherché une solution et je suis tombé sur ce post:

    http://erikej.blogspot.fr/2009/08/running-sql-compact-from-cd-rom-read.html

    qui donne justement comme solution de créer une base de données par version d'OS.Le soucis est que je n'arrive pas à lancer SQL Server Compact sur Windows 8.

    J'ai installer ceci sur un Windows 8 : http://www.microsoft.com/fr-fr/download/details.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.

    lundi 24 juin 2013 09:56
  • Bonjour,

    Vous avez raison :

    La dernière version de SQL Server Compact est la version 4 SP1. Elle est bien sûr téléchargeable ici : http://www.microsoft.com/fr-fr/download/details.aspx?id=30709. Cette version est compatible avec Windows 8. En fait, c'est la version du Framework (ici la version 4.0) qui est impératif, moins la version de Windows.

    Visual Studio 2010 SP1 et Visual Studio 2012 supporte bien la gestion et la création de bases de données sous SQL Server Compact. Je le confirme pour l'avoir testé. voir le lien suivant http://msdn.microsoft.com/en-us/library/gg592948.aspx. Je pense que le texte n'a pas été mis à jour car il semble s'agir d'anciennes versions de Visual Studio.

    Par contre, il est possible que cette fonctionnalité ne soit pas disponible dans l'éditionExpress des des dernières versions de Visual Studio mais disponible dans les versions payantes.

    Il vous reste la possibilité de créer la base de données en utilisant la programmation. Cela se fait avec la commande "CREATE DATABASE...". Les informations sont disponibles ici : http://msdn.microsoft.com/en-us/library/ms174454.aspx ou encore http://msdn.microsoft.com/en-us/library/ms171966.aspx

    Espérant avoir répondu à votre attente.

    Bien à vous.

    PGeiger


    Philippe Geiger Consultant certified / Trainer Certified Microsoft SQL Server At Happly www.happly.fr

    lundi 24 juin 2013 13:10
  • Effectivement c'est de ma faute, j'avais installé une version light ...

    Maintenant j'aimerais pouvoir changer de base de données en fonction de la version de Windows installé. Comme indiqué dans le lien précédent .

    Pour ce faire j'ai réalisé le code suivant,

    //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());

    le soucis est que la base de données reste la même ...

    Merci pour toutes vos réponses et bonne journée.

    mardi 25 juin 2013 07:21
  • J'ai trouvé !

    Ce post m'a bien aidé : http://social.msdn.microsoft.com/Forums/fr-FR/f6525fa4-271e-48d0-9cc9-bf57223670f6/adonet-changer-connectionstring-dynamiquement

    pour résumer il faut établir une nouvelle connexion pour chaque tableAdapter.

    Merci à tous.

    • Marqué comme réponse Stuckly mardi 25 juin 2013 15:02
    mardi 25 juin 2013 15:02