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 :

Logiciel avec une base de données fonctionnel sur un autre PC [Débutant]


Sujet :

C#

  1. #1
    Membre à l'essai Avatar de Asticoco
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 20
    Points : 15
    Points
    15
    Par défaut Logiciel avec une base de données fonctionnel sur un autre PC
    Bonjour,

    j'écris ici car j'ai une petite question à propos d'une base de données sql que je fait fonctionner avec mon logiciel en C# sur Visual Studio 2017. Pour l'instant, le logiciel consiste à avoir un fenêtre de connexion avec login et mdp et une fenêtre où on ajoute et supprime des utilisateurs. Sur mon PC tout fonctionne bien mais dès qu'on lance le logiciel sur un autre PC, il ne trouve pas la base.

    Voici la ligne qui indique où se trouve ma base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Hugo\source\repos\assistant_ioconcept\assistant_ioconcept\DB.mdf;Integrated Security=True;Connect Timeout=30
    Savez-vous comment partager mon logiciel et sa base sur d'autres ordinateurs ?

    Merci-d'avance,

    Asticoco

  2. #2
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 640
    Points : 2 149
    Points
    2 149
    Par défaut
    Bonjour,

    Bien que tu fournisses la base de données, la plupart des bases de données (MS-SQL dans ton cas) fonctionne très souvent avec un serveur, il faut donc installer l'environnement ou le strict minimum pour que ça puisse fonctionner.

    Après ça dépends de la finalité de ton logiciel, mais soit tu passes sur un type de base de données portable (SQLite à tout hasard), soit tu installes MS-SQL sur l'autre machine, soit tu configures une connexion a une seule et même base de données ou tu te connectera a chaque fois.

    Ça dépends de tes besoins.

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Bonjour Hugo,
    tu as un chemin en "dur" dans ton code. Si tu exécutes ce code sur un autre PC qui n'a ce répertoire "C:\Users\Hugo\source\repos\assistant_ioconcept\assistant_ioconcept\DB.mdf" ça ne peut pas fonctionner.
    Plusieurs possibilités :
    * Soit tu mets la base de données au niveau de ton fichier .exe ou avec un chemin en relatif à cet exe
    * Soit dans un répertoire prévu à cet effet qui sera commun à tous les ordinateurs sur lesquels ton application va se déployer. Par exemple "C:\ProgramData\Local\Nom de ton entreprise\Nom de ton programme\DB.mdf"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
    C'est le rôle d'un installeur de poser la base de données au bon endroit. Tu peux aussi la créer directement à partir de ton code dans le répertoire que tu veux si elle ne contient pas de données.

  4. #4
    Membre à l'essai Avatar de Asticoco
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    D'accord, merci beaucoup pour vos réponses. Je pense que je vais installer le logiciel dans le disque C:, dans un endroit commun à tous les PC.

    J'essaye ça et je vous redis.

  5. #5
    Membre à l'essai Avatar de Asticoco
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par lead8209 Voir le message
    Bonjour Hugo,
    tu as un chemin en "dur" dans ton code. Si tu exécutes ce code sur un autre PC qui n'a ce répertoire "C:\Users\Hugo\source\repos\assistant_ioconcept\assistant_ioconcept\DB.mdf" ça ne peut pas fonctionner.
    Plusieurs possibilités :
    * Soit tu mets la base de données au niveau de ton fichier .exe ou avec un chemin en relatif à cet exe
    * Soit dans un répertoire prévu à cet effet qui sera commun à tous les ordinateurs sur lesquels ton application va se déployer. Par exemple "C:\ProgramData\Local\Nom de ton entreprise\Nom de ton programme\DB.mdf"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
    C'est le rôle d'un installeur de poser la base de données au bon endroit. Tu peux aussi la créer directement à partir de ton code dans le répertoire que tu veux si elle ne contient pas de données.

    Au final, j'ai tout mis dans "C:\Program Files\assistant_ioconcept\" et changé le chemin dans "Datasource" mais ça ne fonctionne pas du tout :/

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Tu peux donner des éléments techniques ? boite de dialogue d'exception ?
    EDIT : C'est pas faux ce que dit PixelJuice.. j'ai pensé base de données locale mais effectivement .mdf est l'extension des bases de données SQL Server.. Tu ne pourras pas les utiliser sans SQL Server installé sur la machine (donc c'est une mauvaise idée pour faire une base de données locale). Quel modèle veux-tu ? Données partagées entre les utilisateurs ou chaque utilisateur a sa base de données ?

  7. #7
    Membre à l'essai Avatar de Asticoco
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    J'aurais plutôt pensé que chaque utilisateur a sa propre base de données.

    Je me demandais simplement si l'utilisation de SQL server par un débutant pour faire une table avec seulement quelques utilisateurs était convenable ou si il faudrait mieux utiliser une autre technique de stockage des données ?

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Si tu veux que chaque utilisateur ait sa bdd il te faut une base de données locale. Vois du côté de SQLite. Tu peux l'intégrer dans ton projet directement dans Visual studio avec Nuget package manager. Selon moi c'est plus "facile" et mon "invasif" que de monter un serveur sqlsur chaque poste.

  9. #9
    Membre à l'essai Avatar de Asticoco
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    OK merci beaucoup j'essaierai ça.

  10. #10
    Membre chevronné

    Profil pro
    Chef de Projet / Développeur
    Inscrit en
    Juin 2002
    Messages
    598
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de Projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2002
    Messages : 598
    Points : 2 020
    Points
    2 020
    Par défaut
    Citation Envoyé par Asticoco Voir le message
    Au final, j'ai tout mis dans "C:\Program Files\assistant_ioconcept\" et changé le chemin dans "Datasource" mais ça ne fonctionne pas du tout :/
    On ne met jamais des données dans le dossier "Program Files" , il demande une élévation de privilège ou des droits administrateurs pour pouvoir y écrire (et c'est très bien comme cela).
    Normal que cela ne fonctionne pas.

    Donc, soit tu construits ton chemin dynamiquement à l'aide de Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) comme indiqué ; mais qui oblige à utiliser le dossier ProgramData, qui n'est pas forcement ce que l'on veux.

    Soit tu places ces paramètres dans le .config de ton application.
    Par exemple, sous Visual Studio, menu projet > propriétés de xxxxxx > onglet paramètres
    Tu y créé un paramètre de type "application" (que l'on va appeler "CheminBase" pour la suite) et tu y met le chemin de ta base, voir la chaine de connexion complète.

    Dans ton code tu y accède par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Properties.Settings.Default.CheminBase
    Lors du déploiement sur un autre ordi, il suffit d'éditer avec notepad monprogram.exe.config et de changer la valeur pour l'adapter à la situation locale.
    Attention, monprogram.exe.config étant dans "Program Files" il est protégé en écriture, il faut donc lancer notepad en mode admin.
    --
    vanquish

  11. #11
    Membre à l'essai Avatar de Asticoco
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Au final, j'ai simplement mis mon dossier en racine du disque C: et puisqu'il ne s'agit pas d'un logiciel que je compte partager à des dizaines de personnes, j'ai juste placé un fichier à lire qui indique où placer le logiciel pour qu'il fonctionne. Etant débutant, je pense que c'est plus simple pour moi de faire ça que d'utiliser SQL server ou SQLite.

    Dans tous les cas, merci à tout le monde de m'avoir aidé

    Asticoco

  12. #12
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 898
    Points : 1 915
    Points
    1 915
    Par défaut
    Au final elle fait quoi ton application ? Tu parles d'une base avec une liste d'utilisateurs, c'est typiquement ce que l'on trouve sur un serveur, ça n'a pas vraiment d'intérêt dans une application locale. Ou bien c'est juste un programme que tu fais pour t'entrainer ?

  13. #13
    Membre à l'essai Avatar de Asticoco
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Noxen Voir le message
    Au final elle fait quoi ton application ? Tu parles d'une base avec une liste d'utilisateurs, c'est typiquement ce que l'on trouve sur un serveur, ça n'a pas vraiment d'intérêt dans une application locale. Ou bien c'est juste un programme que tu fais pour t'entrainer ?
    Au final, avant de t'expliquer, j'ai tout changé par rapport à ce matin : après avoir pas mal galéré avec ma base SQL j'ai décidé de tester sur un autre projet avec une base Access. Au final après avoir du installer des drivers qui n'ont pas marchés et beaucoup d'autres problèmes avec oledb, mon logiciel fonctionne sur une base Access 2002/2003 en mdb x)

    En réalité, je développe des petits logiciels pour m’entraîner ou répondre à des besoins spécifiques. Ici, il s'agit d'un logiciel protégé par un page de connexion avec login et mdp : dans la base access il y a les différents utilisateurs et j'ai aussi créé une fenêtre afin d'ajouter et supprimer des utilisateurs sans avoir à ouvrir le fichier Access (j'ai une datagridview qui permet de visualiser la table).

    La fonction principale du logiciel sera de faire des recherches dans une grosse base Access (après s'être connecté). Mais dans aucun cas je compte l'utiliser en partage de plusieurs personnes.

    Voila

    Asticoco

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

Discussions similaires

  1. comment exporter une base de données situé sur un autre poste
    Par coolanso dans le forum Administration
    Réponses: 1
    Dernier message: 22/10/2012, 10h48
  2. Réponses: 3
    Dernier message: 21/04/2012, 12h42
  3. Transférer une base de donnée facilement sur un autre serveur
    Par Fooshi dans le forum Administration
    Réponses: 2
    Dernier message: 20/10/2011, 14h17
  4. Réponses: 19
    Dernier message: 04/02/2009, 10h17
  5. communiquer avec une base de données sur internet
    Par richard038 dans le forum Bases de données
    Réponses: 7
    Dernier message: 15/02/2006, 18h01

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