2013-08-12 6 views
5

J'ai un programme qui utilisent une base de données locale (sqlite3 et i utiliser db module). Ce que je veux faire est d'utiliser la base de données sans savoir où c'est.Base de données Emplacement dans le schéma

Par exemple, si je code l'emplacement de la base de données dans mon programme (comme C:/mes documents/mon programme/localdb.db), il fonctionne correctement.

Mais si je viens d'écrire « localdb.db », il ne trouve pas la base de données même si la base de données est dans le même dossier avec le fichier .rkt qui utilisent la base de données. (Je ne sais pas comment mais dans les versions antérieures de mon programme, ça fonctionnait).

Ainsi, comment la base de données puis-je assurer d'utiliser sans coder son emplacement?

Merci beaucoup!

Répondre

8

Au lieu de "localdb.db", essayez d'utiliser un moteur d'exécution chemin comme ceci:

(define-runtime-path localdb "localdb.db") 

et utiliser localdb en place de la chaîne de chemin. Vous aurez besoin de (require racket/runtime-path).

+1

This is it! Merci – Asqan

+0

Y at-il un moyen comme celui-ci pour connaître le répertoire concret de la base de données? @Asumu Takikawa – Asqan

+2

Vous pouvez appeler 'split-path' sur le chemin d'exécution pour l'obtenir. –