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 :

modifier chemin d'accès à la base de données


Sujet :

ADO.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Par défaut modifier chemin d'accès à la base de données
    Bonjour à tous,

    je réalise une appli en c# mode WinForm avec une base de données SQLServerCompact (fichier .sdf) en ADO.NET

    Mon application doit-être portable. Mon problème est qu'actuellement elle ne l'est pas.

    En effet il y à une exception lorsque j'essaye d'accéder à la base depuis un autre PC que le mien. L'appli est incapable de retrouver le fichier .sdf

    Je ne sais pas comment et où modifier cet accès, c'est pourquoi j'ai besoin de votre aide.

    Je pensais, une fois que j'aurais trouvé comment faire, à donner un chemin d'accès se basant sur un Application.StartupPath de manière à avoir un chemin s'adaptant à toute configuration.

    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 : 44
    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
    Il faut juste générer dynamiquement la chaine de connexion pour indiquer l'emplacement du fichier...

    Fais voir ton code actuel pour ouvrir la connexion à la DB

  3. #3
    Membre averti
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Par défaut
    Merci tomlev pour ta réponse rapide

    le soucis est que n'étant pas familier avec les bases de données en c# j'ai tout fait en mode drag and drop.

    Ainsi je ne suis pas sur d'avoir réellement cerné l'endroit ou s'effectue se ConnectionString.
    J'ai bien un fichier Settings.designer.cs sur lequel j'ai essayé d'agir.

    Voici le code de ce fichier:

    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
    //------------------------------------------------------------------------------
    // <auto-generated>
    //     Ce code a été généré par un outil.
    //     Version du runtime :4.0.30319.17929
    //
    //     Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
    //     le code est régénéré.
    // </auto-generated>
    //------------------------------------------------------------------------------
     
    namespace DVD.Properties {
     
     
        [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
        internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
        {
     
            private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
     
            public static Settings Default
            {
                get
                {
                    return defaultInstance;
                }
            }
     
            [global::System.Configuration.ApplicationScopedSettingAttribute()]
            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
            [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
            [global::System.Configuration.DefaultSettingValueAttribute("Data Source=|DataDirectory|\\Database1.sdf")]
            public string Database1ConnectionString
            {
                get
                {
                    return ((string)(this["Database1ConnectionString"]));
                }
            }
     
            [global::System.Configuration.ApplicationScopedSettingAttribute()]
            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
            [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
            [global::System.Configuration.DefaultSettingValueAttribute("Data Source=(LocalDB)\\v11.0;AttachDbFilename=\"c:\\users\\dileba01\\documents\\visual " +
                "studio 2012\\Projects\\Bonnet\\Bonnet\\DataBaseBonnet.mdf\";Integrated Security=True")]
            public string DataBaseBonnetConnectionString
            {
                get
                {
                    return ((string)(this["DataBaseBonnetConnectionString"]));
                }
            }
     
            [global::System.Configuration.ApplicationScopedSettingAttribute()]
            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
            [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
            [global::System.Configuration.DefaultSettingValueAttribute("Data Source=|DataDirectory|\\Database.sdf")]
            public string DatabaseConnectionString
            {
                get
                {
                    return ((string)(this["DatabaseConnectionString"]));
                }
            }
        }
    }
    désolé si c'est un peu long. Mon application porte le nom de DVD (d'ou le besoin de portabilité :p )
    Je ne suis pas sur que ça soit ce fichier qui est concerné.

    Selon tes suggestions j'ai essayé d'agir dessus et de mettre le code suivant à la place du chemin en dur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [global::System.Configuration.DefaultSettingValueAttribute("Data Source=(LocalDB)\\v11.0;AttachDbFilename=\""+ Application.StartupPath +
                "\\DataBaseBonnet.mdf\";Integrated Security=True")]
    L'application.StartupPath me sort le chemin de l'exécutable (le fichier .sdf étant toujours situé dans le même dossier.)

    mais ça ne plait pas au compilateur. J'ai fait quelques recherches et j'ai trouvé ça : http://stackoverflow.com/questions/6...valueattribute

    mais je ne comprends toujours pas comment faire.
    Je me suis donc dis que je pouvais modifié ce chemin que lorsque l'application est lancé (la connexion à la base de données n'est pas nécessaire sur le formulaire d'accueil) mais là encore je reste bloqué.

    Merci encore, j'ai essayé d'être le plus clair possible

    EDIT: j'ai aussi un ConnectionString dans mon DataSet, il faut peut-être que j'agisse ici.


    EDIT2 : j'ai donc essayé de changer le connection.ConnectionString dans mon dataset.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void InitConnection() {
                this._connection = new global::System.Data.SqlServerCe.SqlCeConnection();
                this._connection.ConnectionString = global::DVD.Properties.Settings.Default.DatabaseConnectionString;
    }
    j'avais ça auparavant et j'ai changé le ConnectionString par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this._connection.ConnectionString = System.AppDomain.CurrentDomain.BaseDirectory + "\\Database.sdf";
    mais j'ai une exception : " Informations supplémentaires*: Le format de la chaîne d'initialisation n'est pas conforme à la spécification qui débute à l'index 0. "

  4. #4
    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 : 44
    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
    Remplace juste le répertoire par |DataDirectory| dans les paramètres. Fais cette modif en passant par les propriétés du projet,
    PAS en modifiant le fichier Settings.cs ; celui-ci est généré automatiqument, si tu le modifies manuellement tes modifications seront perdues la prochaine fois que le fichier sera regénéré.

    Soit dit en passant, ta base DataBaseBonnet est une base de données SQL Server, pas SQL Server Compact... donc absolument pas portable

  5. #5
    Membre averti
    Inscrit en
    Mai 2013
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 54
    Par défaut
    Merci encore une fois tomlev.

    Premièrement
    Remplace juste le répertoire par |DataDirectory| dans les paramètres
    Désolé mais je suis un peu perdu si tu pouvais me le détailler un peu plus s'il te plait.
    Je suis allé dans les paramètres de mon application. J'ai vu 3 paramètres :
    Database1ConnectionString
    DataBaseBonnetConnectionString
    DatabaseConnectionString

    alors que je n'ai qu'une seule base qui porte le nom de "Database.sdf"

    J'ai supprimer Database1ConnectionString et DataBaseBonnetConnectionString (qui à mon avis n'ont rien à faire dans cette appli), l'appli fonctionne toujours correctement, il me reste ce problème de chemin d'accès de la base de données.

    J'ai donc un tableau suivant:
    DatabaseConnectionString : Chaîne de connexion: Application: Data Source=|DataDirectory|\Database.sdf

    lorsque je clic sur les propriétés de connexion j'ai donc les informations suivantes:

    Source de données : Microsoft SQL Server Compact 4.0
    Poste de travail
    Propriété de connexion:
    BDD: chemin en dur je pense que c'est ce qui me gêne
    aucun mot de passe.

    Deuxièmement j'en profite pour te poser des questions sur la bdd vu que tu m'en parles:

    Soit dit en passant, ta base DataBaseBonnet est une base de données SQL Server, pas SQL Server Compact... donc absolument pas portable
    Je ne sais ce qu'est la base de données DataBaseBonnet, ma Database.sdf est pourtant bien un SQLServerCompact non? Je pourrais déployer mon appli sur n'importe quel pc?

    J'ai aussi plusieurs fichiers Northwind40.sdf dans mes documents,
    Database.sdf dans le dossier DVD et le même dans le dossier Debug.sdf

    Je suis totalement perdu, pourquoi autant de fichiers pour une base?


    Merci beaucoup.

  6. #6
    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 : 44
    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 Stuckly Voir le message
    Désolé mais je suis un peu perdu si tu pouvais me le détailler un peu plus s'il te plait.
    Ouvre les propriétés du projet (clic droit sur le projet dans l'explorateur de solution > propriétés)
    Va dans l'onglet "Paramètres"
    Trouve le paramètre DataBaseBonnetConnectionString
    Change sa valeur pour mettre ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|\DataBaseBonnet.mdf;Integrated Security=True
    (mais vu que finalement tu n'as pas besoin de cette DB, ça sert pas à grand chose en fait...)


    Citation Envoyé par Stuckly Voir le message
    Impossible de mettre mon application sur un DVD ?
    Bah c'est pas vraiment ça la question...
    SQL Server (pas compact) est une base de données serveur, donc il faut que ce soit installé sur la machine. Il ne suffit pas d'embarquer le fichier .mdf dans ton application.
    SQL Server Compact, par contre, est une base de données embarquée ; il n'y a pas besoin d'installer quoi que ce soit sur la machine, il suffit que l'application embarque le fichier .sdf de la base de données (et les DLL pour y accéder bien sûr)

    Citation Envoyé par Stuckly Voir le message
    EDIT: je viens de voir que dans les paramètres de mon appli j'ai 3 paramètres :
    Database1ConnectionString
    DataBaseBonnetConnectionString
    DatabaseConnectionString

    alors que je n'ai qu'une seule base qui porte le nom de "Database.sdf"

    J'ai supprimer Database1ConnectionString et DataBaseBonnetConnectionString, l'appli fonctionne toujours correctemment, il me reste ce problème de chemin d'accès de la base de données.
    Bah normalement le chemin est bon pour Database.sdf, puisqu'il est défini avec |DataDirectory| (à l'exécution c'est remplacé par le répertoire de l'exécutable)

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

Discussions similaires

  1. Accès à une base de données pour modifier son contenu
    Par nounou nu dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 13/05/2015, 01h44
  2. Réponses: 8
    Dernier message: 13/02/2014, 19h00
  3. [C#] Accés à une base de données AS400
    Par Green Hornet dans le forum Accès aux données
    Réponses: 8
    Dernier message: 14/11/2011, 12h26
  4. Modifer le chemin PATH d'accès à une base de donnée
    Par tipiweb dans le forum Bases de données
    Réponses: 5
    Dernier message: 06/04/2005, 17h04
  5. Modifier le nom d'une base de donnée avec erreur sy
    Par mmn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/11/2003, 11h12

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