WPF App, C#, SQLite: Chemin d'accès relatif pour base de données
Chris_2_4114
Messages postés
29
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour...
J'aimerais bien que quelqu'un m'aide à créer un chemin d'accès relatif à ma base de données en WPF App.
Voici ma chaine de connexion:
Sur le PC du développement de l'appli ça marche bien mais impossible d'accéder à la base quand l'application est déployée sur un autre PC.
Merci d'avance
J'aimerais bien que quelqu'un m'aide à créer un chemin d'accès relatif à ma base de données en WPF App.
Voici ma chaine de connexion:
SQLiteConnection con = new SQLiteConnection(@"Data Source=.\base.db"); con.Open();
Sur le PC du développement de l'appli ça marche bien mais impossible d'accéder à la base quand l'application est déployée sur un autre PC.
Merci d'avance
A voir également:
- WPF App, C#, SQLite: Chemin d'accès relatif pour base de données
- App data - Guide
- Télécharger sans app store gratuit - Guide
- Adb app control - Guide
- Vidmate app - Télécharger - TV & Vidéo
- App mover - Télécharger - Divers Utilitaires
9 réponses
Il se peut également que le répertoire courant de travail soit modifié par ailleurs dans ton application.
Une option serait alors de générer le chemin absolu de la base de données, en t'aidant de
(cf la page suivante : https://stackoverflow.com/questions/837488/how-can-i-get-the-applications-path-in-a-net-console-application )
Une option serait alors de générer le chemin absolu de la base de données, en t'aidant de
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase)
(cf la page suivante : https://stackoverflow.com/questions/837488/how-can-i-get-the-applications-path-in-a-net-console-application )
Bonjour
as tu essayé de construire le chemin complet comme Reivax te l'a proposé?
Si ça n'est pas le cas, je te propose de tester ça
C'est un peu plus rapide à l'exécution que la reflexion.
Attention à bien mettre System.IO.Path, même si tu as un using à System.IO, car en WPF il y a un conflit avec System.Windows.Shapes.Path qui est un contrôle.
Le message d'erreur indique "directory not found" tu peux ajouter
Juste pour voir si le message s'affiche.
Tu peux aussi ajouter
Pour vérifier si le fichier texte est bien écrit, ce qui éliminerait définitivement un problème de droits d'accès.
Il y a une version trial de 30 jours du package sqlite que tu utilises.
Pour faire un test le plus représentatif
as tu essayé de construire le chemin complet comme Reivax te l'a proposé?
Si ça n'est pas le cas, je te propose de tester ça
string dossier = System.AppDomain.CurrentDomain.BaseDirectory; string chemim = System.IO.Path.Combine(dossier, "base.db");
C'est un peu plus rapide à l'exécution que la reflexion.
Attention à bien mettre System.IO.Path, même si tu as un using à System.IO, car en WPF il y a un conflit avec System.Windows.Shapes.Path qui est un contrôle.
Le message d'erreur indique "directory not found" tu peux ajouter
if (!System.IO.Directory.Exists(dossier)) MessageBox.Show("Le dossier n'existe pas");
Juste pour voir si le message s'affiche.
Tu peux aussi ajouter
System.IO.File.WriteAllText(System.IO.Path.Combine(dossier, "test.txt"), "Coucou");
Pour vérifier si le fichier texte est bien écrit, ce qui éliminerait définitivement un problème de droits d'accès.
Il y a une version trial de 30 jours du package sqlite que tu utilises.
Pour faire un test le plus représentatif
- avec quel Visual Studio codes tu(millésime et version {community, pro, entreprise etc....})?
- sur quel OS?
- quelle framework?
- quel est l'OS du PC cible?
- dispose t il de la framework en question?
J'ai essayé le codelequel je t'en ai proposé 3 en plus de celui de Xavier.
Et je t'ai posé plusieurs questions, tu n'as répondu à aucune.
Je ne suis pas magicien, sans éléments aucune chance de pouvoir essayer de t'aider.
Par contre, cette fois ci ça n'est pas le même message d'erreur.
Là clairement, il dit que le fichier n'a pas été trouvé.
- option 1, la bdd n'est pas à cet endroit là.
- option 2, la bdd n'est pas du tout sur le pc.
string dossier = System.AppDomain.CurrentDomain.BaseDirectory; string chemim = System.IO.Path.Combine(dossier, "base.db");
Merci bien... c'est ce code que j'ai utilisé finalement. Pour l'emplacement, la bdd est bien là mais je saurai me débrouiller pour voir le souci avec le setup.
J'utilise Visual studio Community 2019, OS: Windows 7 entreprise, .NET Framework 4.7.2. Le second PC est sous Windows 10 entreprise disposant d'une .NET Framework plus avancée (4.8)
Tu dis (et je te crois) que la bdd est bien à l'emplacement signalé par le message d'erreur.
Pourtant ton message dit clairement le contraire.
Pourtant ton message dit clairement le contraire.
- Normalement W10 ne bloque pas les accès dans AppData, pour le valider de façon définitive as tu essayé d'écrire un fichier text comme je te l'ai proposé?
- Normalement ce qui est codé en C#, avec la framework 4.7 est censé fonctionner en 4.8, mais y'a p'tet une subtilité avec ton outil. En effet, il utilise peut la dll win32 de sqlite. Il y a plusieurs façons de le faire et l'une d'entre elle est de passer par un projet C++ .Net et dans ce cas sur le PC cible il te faut le runtime qui va bien, pour 4.7 c'est le runtine 2107 (x86 ou x64 selon le cas). L'un des ces runtime est il sur ton PC de développement et absent sur l'autre?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
Y a t il un message d’erreur sur le pc de déploiement?
Si oui peux tu le copier coller?
Y a t il un message d’erreur sur le pc de déploiement?
Si oui peux tu le copier coller?
Bonjour
Je suis étonné de ta réponse, autant
Un message d'erreur est rarement écrit en français, et si c'était le cas, pourquoi une partie du texte est en anglais.
Afin d'être bien raccord avec toi
Je suis étonné de ta réponse, autant
Devart.Data.SQLiteException: "Unable to open database file"pour quoi pas, autant
Impossible de trouver une partie du chemin d'accès..
Un message d'erreur est rarement écrit en français, et si c'était le cas, pourquoi une partie du texte est en anglais.
Afin d'être bien raccord avec toi
Impossible de trouver une partie du chemin d'accès..est bien écrit dans le message d'erreur? Ça n'est pas ton interprétation de
Devart.Data.SQLiteException: "Unable to open database file"?
Bonjour,
non, il n'y a aucun message erreur...
ça répond à d'autres fonctionnalités sauf seulement s'il faut communiquer avec la base de données..
non, il n'y a aucun message erreur...
ça répond à d'autres fonctionnalités sauf seulement s'il faut communiquer avec la base de données..
Petit Rappel; voici ce que j'ai dans App.Config jusqu'ici (je me demande s'il n y a quelque chose à y ajouter par hasard):
<configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework, Version=v4.7.2"/></startup> </configuration>
Bonjour,
Merci bien.. J'ai essayé le code. Quand je lance le fichier ".exe" du dossier \bin\debug ça marche parfaitement mais quand je publie le projet et je l'installe avec l'exécutable du dossier "publish" ça ne marche pas. dans ce dernier cas le débogage donne l'exception suivante https://img-19.ccm2.net/T9mFjfO3NmEco1KdCcqa2KDL_ZA=/5e79dd82969b4fdb84defcff58073be3/tmp/c.PNG
|fancy]
Merci bien.. J'ai essayé le code. Quand je lance le fichier ".exe" du dossier \bin\debug ça marche parfaitement mais quand je publie le projet et je l'installe avec l'exécutable du dossier "publish" ça ne marche pas. dans ce dernier cas le débogage donne l'exception suivante https://img-19.ccm2.net/T9mFjfO3NmEco1KdCcqa2KDL_ZA=/5e79dd82969b4fdb84defcff58073be3/tmp/c.PNG