Envoyé par : jérôme
Date : 27/06/2009 11:27
Bonjour à tous, j'ai un petit souci avec sqlite, sans doute une bêtise, mais je bloque... Pour créer une connection à sqlite il faut faire
var file = Components.classes["@mozilla.org/file/directory_service;1"]. getService(Components.interfaces.nsIProperties). get("resource:app", Components.interfaces.nsIFile); file.append("ldc.sqlite");
moi j'ai mis "resource:app" pour récupérer l'adresse de l'application, ok. Or, je souhaite faire pointer sur un dossier qui est dans le chrome (ex:chrome/content/data). Eh bien je n'y arrive pas. Si je mets la bonne adresse dans file.append, il me crée un fichier vide, ce qui par ailleurs est normal. Ainsi, comment créer une instance du bon fichier au bon endroit ? Un petit coup de main serait le bienvenu.
Merci par avance.
Envoyé par : laurentj
Date : 27/06/2009 14:54
Salut,
Si ta base est dans ton chrome, indique une url chrome://..... Non ? Tu veux donner cet objet file à quoi ?
Mais de toute façon ce n'est pas forcément une bonne idée de mettre ça dans le chrome, surtout si tu comptes modifier le contenu de la base. Le contenu du chrome, et même de toute ton extension/application, est censé être en lecture seule.
Si tu veux une base à modifier, il est hautement préférable que celle-ci soit dans le profile de l'utilisateur par exemple et donc une base qu'il faut créer ou recopier au premier démarrage de l'extension ou application.
Envoyé par : jérôme
Date : 27/06/2009 15:49
Bonjour et merci d'avoir répondu à mon message. Mais je ne vous cache pas que je ne comprend pas tout à votre réponse...
Je développe une appli xulrunner. J'utilise sqlite pour peupler un arbre.Pour que mon arbre soit peuplé, il faut que la base sqlite soit dans le chrome. Or, pour me connecter à la base, il faut créer une instance et je n'arrive pas à créer cette instance où je veux. Egalement, je n'arrive à insérer ou supprimer et modifier qu'à la racine de l'application(chemin que je donne avec resource:app"). Aussi, que faut-il faire, soit pour faire pointer correctement sur la base dans le datasource, quelle adresse mettre?), soit pour créer une instance où je veux.
J'espère que ce que j'écris est compréhensible...
D'après ce que j'ai compris, avant de se connecter à sa base sqlite il faut écrire le code cité dans mon message initial. Peut-être que j'ai mal compris et qu'il y a autre chose à faire...
Un grand merci pour un éclairage supplémentaire :)
Envoyé par : thx1138
Date : 29/06/2009 04:21
Bonjour,
je ne maitrise pas encore sqlite mais j'ai un exemple ici qui fonctionne :
var ifile = Components.classes["@mozilla.org/file/local;1"]. createInstance(Components.interfaces.nsILocalFile);
ifile.initWithPath(chemin du fichier .sqlite); // c:\softs\chrome\content\db.sqlite
j'ai testé avec un chemin chrome (chrome://...) mais fonctionne pas.
en espérant t'avoir aidé...
Envoyé par : jérôme
Date : 29/06/2009 07:55
Bonjour thx1138, un grand merci à toi, c'est exactement ce dont j'avais besoin. Ca marche nickel. Grâce à toi, je vais enfin pouvoir avancer. Merci encore:)
Envoyé par : laurentj
Date : 29/06/2009 15:23
Pour que mon arbre soit peuplé, il faut que la base sqlite soit dans le chrome.
pourquoi cette necessité ?? Je le repète : une base sqlite dans le chrome, ce n'est pas très bien. Il vaut mieux qu'elle soit dans le profil, surtout si il est envisagé de modifier son contenu.
De plus, pourquoi ouvrir à la main une connection, alors qu'en utilisant un template, l'arbre pourrait être rempli automatiquement ?
Envoyé par : jérôme
Date : 29/06/2009 19:28
Bonjour Laurent,
ma base est dans un dossier à la racine de l'appli. J'ai parlé du chrome l'autre fois car je n'arrivais à peupler mon arbre qu'en mettant la base dans le chrome. Pour la connection à sqlite, c'est pour pouvoir insérer dans la base qui est dans mon dossier à la racine de l'application.
D'ailleurs, vous qui êtes initié au xul et aux templates, me voilà confronté à un nouveau souci. Sous vista, aucun problème pour le datasources de mon arbre. (file://C:/hello/base.sqlite). Tout s'affiche nickel.
En revanche, sous windows xp, si je mets mon appli sur le bureau par exemple, ce qui donne comme url pour le datasources file://C:/Documents and Settings/jerome/Bureau/hello/base.sqlite ça ne marche pas. J'ai essayé en mettant file://C:/base.sqlite et là ça marche, j'en conclus que le problème vient des espaces entre les mots.
Peut-être avez-vous une solution.
Merci d'avance.
Envoyé par : laurentj
Date : 30/06/2009 14:46
c'est pour pouvoir insérer dans la base qui est dans mon dossier à la racine de l'application.
Encore une fois, c'est mal. Il faut mettre une base dans le dossier de l'utilisateur.
file://C:/Documents and Settings/jerome/Bureau/hello/base.sqlite
essaye en remplaçant les espaces par %20
Envoyé par : jérôme
Date : 30/06/2009 19:08
Ok, c'est noté pour le dossier utilisateur.
Et un grand merci pour le %20, c'était ça qui bloquait. Merci encore Laurent.
Envoyé par : thx1138
Date : 01/07/2009 00:30
Bonjour,
le problème de mettre le fichier db ds le dossier utilisateur est que le programme est moins portable.
Si on le met ds le dossier avec les fichiers .xul, il suffit de prendre le dossier et tout vient avec.
Pour des utilisateurs non confirmé, c'est plus facile pour eux de sauvegarder 1 seul dossier que de devoir faire des exports/imports
je dis ca, je dis rien....
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.