Forums : Extensions

Aller à la discussion :  Plus récente Plus ancienne

Aller à la page :  1 2 3 4 5 6

# Re: Impossible d'exécuter des requêtes avec mozStorage

Envoyé par : Raphael

Date : 29/07/2006 12:16

Ok... mais je ne m'explique pas que ne pas avoir réussi à "porter" ton appli alors ? Voici ce que j'ai fait :

  • DL de xulrunner-1.9a1.en-US.linux-i686.tar.gz
  • Extraction du contenu dans "xulrunner" à la place du contenu de ton xulrunner pour Windows
  • Copie de xulrunner-bin de xulrunner dans Textree et renommage en Textree (suppression de Textree.exe présent)
  • Je double-clique sur Textree

Mais rien... As-tu fait quelque chose d'autres ? Merci :)

# Re: Impossible d'exécuter des requêtes avec mozStorage

Envoyé par : MonsieurN

Date : 29/07/2006 13:41

Nan c bien xulrunner-stub que tu dois renommer et non xulrunner-bin

# Re: Impossible d'exécuter des requêtes avec mozStorage

Envoyé par : Raphael

Date : 29/07/2006 15:37

Ok... mais je ne l'ai pas dans la version que j'ai téléchargé : xulrunner-1.9a1.en-US.linux-i686.tar.gz J'ai bien vu que dans ta version, tu as un xulrunner-stub, mais moi pas, c'est balaud... ^_^"

Puis-je savoir où tu prends les dernières versions de XulRunner ?

PS : Merci pour ton "portage", ça fait plaisir... =) Je m'en vais de ce pas essayer de faire la même chose pour SQLite Manager de thefab.

EDIT : En fait j'ai trouvé le problème, tu as dû télécharger le tar.bz2 ! Car effectivement, le stub s'y trouve ! Ca doit être une légère erreur de Mozilla. Enfin, c'est bon maintenant que j'ai compris le problème =)

EDIT 2 : Ca y est ! SQLite Manager sous Linux Ubuntu les doigts dans le nez... ^_^

XUL est vraiment un rêve ! L'application prend l'aspect de mon thème GTK2 sous Gnome et de mon thème XP sous Windows ! C'est MAGNIFIQUE, c'est TOTALEMENT PORTABLE sans aucune retouche ! C'est multi-lingue et multi-skin très simplement ! Bref, pour un doux rêveur comme moi, c'est vraiment l'idéal. Je suis très avide de connaissances en programmation XUL et JS, je sens que je vais dévorer vos applis à tous 2, ainsi que d'innombrables livres et tutoriaux...

Encore merci à vous 2 pour l'expérience que vous partagez ici, j'ai hâte de pouvoir en faire autant une fois que j'en saurai un peu plus... =D

# Re: Impossible d'exécuter des requêtes avec mozStorage

Envoyé par : Raphael

Date : 06/08/2006 14:36

MonsieurN, j'ai un petite question pour vous au sujet de la création de tables SQLite 3. Pour la liaison n à m, vous utilisez une table tag_notes créée comme cela :

CREATE TABLE tags_notes (tag_id INTEGER, note_id INTEGER, created_at DATE);

Pour mon projet, j'ai besoin de faire la même chose... mais je pensais rajouter un PRIMARY KEY (tag_id,note_id) Malheureusement, j'ai une erreur qui me laisse penser que SQLite3 ne permet pas de définir ainsi une double clé primaire pour les tables définies par une combinaison unique de 2 champs ?

Qu'en est-il ? Et si vraiment, ce n'est pas possible... comment gérer cet inconvénient ?

  • Créer une clé primaire tags_notes_id pour manipuler facilement les données, même si architecturellement, elle est inutile ?
  • Ne rien faire, laisser comme ça... Mais est-ce qu'on ne perd pas en fonctionnalité ? Si les clés primaires existent, il y a bien une raison non ?

Merci d'avance pour votre aide :)

EDIT : J'ai dû faire une autre erreur en fait, puisque j'y arrive maintenant en fait... =) Cependant, je suis toujours intéressé par une petite explication sur l'utilité d'une double clé primaire pour une table qui en lie 2 autres, comme votre tag_notes... Etait-ce volontaire de ne pas mettre de double primary key ?

EDIT 2 : J'ai un problème (oui, encore...) avec ma table version PRIMARY KEY (tag_id,note_id) : Je ne peux pas ajouter un couple (2,4) si le 2 est déjà utilisé... J'ai (2,1) par exemple, impossible de rentrer (2,2) ou (2,3) par exemple, aucun message d'erreur, mais aucune insertion non plus...

Avec ma table SANS clé primaire, je peux ajouter mon couple (2,4) ou (2,3) ! Malheureusement, du coup, lorsque je veux ajouter un nouvel indice (3,x) en entrant "NULL" (pour simuler l'auto_increment en SQLite3), bien je rentre bien NULL et il n'y a pas d'auto_increment ! T_T

Je ne sais pas comment procéder ? Ai-je oublié quelque chose ? Faut-il gérer les id en manuel ? ou y-a-t-il une astuce ? Je pars pour 1 semaine demain donc je ne vous répondrai pas de suite, mais j'espère que vous pourrez m'aider sur ce coup encore =) Merci.

# Re: Impossible d'exécuter des requêtes avec mozStorage

Envoyé par : thefab

Date : 08/08/2006 14:22

Si, si SQLite3 permet les clés primaires sur plusieurs champs (au passage il ajoute une contrainte UNIQUE sur les 2 champs), mais je crois que les 2 champs doivent être non null:

CREATE TABLE x
  (
  y INTEGER NOT NULL,
  z INTEGER NOT NULL,
  PRIMARY KEY (y, z)
  );

Créer une clé primaire tags_notes_id pour manipuler facilement les données

Plus besoin vu que tu as ta clé primaire sur plusieurs champs, par contre SQLite garde en interne une colonne rowid qui contient un numéro unique pour chaque enregistrement:

SELECT rowid, * FROM tags_notes;

rowid, tag_id, note_id, created_at

Je ne peux pas ajouter un couple (2,4) si le 2 est déjà utilisé

Ca c'est vraiment étrange, moi je peux (peut-être à cause du non null?):

INSERT INTO x VALUES(1, 1);
INSERT INTO x VALUES(1, 2);
INSERT INTO x VALUES(2, 1);

Fonctionnent correctement!

pour simuler l'auto_increment en SQLite3

Je ne pense pas que l'auto-incémentation fonctionne pour une clé primaire sur plusieurs champs. Une clé primaire sur plusieurs champs doit avoir une signification (tag, note, par exemple) il ne faut pas que SQLite gère pour toi 'au bol' quel tag est associé à quelle note.

Fabrice

# Re: Impossible d'exécuter des requêtes avec mozStorage

Envoyé par : Raphael

Date : 13/08/2006 20:42

Ok... bien merci pour tes infos, je vais essayer avec NOT NULL...

Sinon, j'ai quelque chose de bizarre, en fait je manipule une base SQLite3 via PHP avec SQLite 3.2.8 (for PHP5 PDO SQLite livré avec XAMPP 1.5.3a) et j'arrive parfaitement à lire cette base avec ton SQLite Manager en XUL ;)

Cependant, j'ai essayé de faire des requêtes d'insertion dessus mais le logiciel me dit qu'il n'est pas accessible en écriture... ?

  • Est-ce que c'est que l'implémentation d'écriture n'est pas encore faite ?
  • Est-ce parce que XULRunner utilise une version plus récente et ne peut donc pas écrire sur une version plus ancienne de SQLite3 ? Pourtant, c'est la même branche...
  • Est-ce car je suis sous Linux et que les droits sur mes fichiers ne sont pas bons ?
  • autre ?

2° question : pour gérer l'incrémentation manuelle d'un ID alors, comment faire ? une requête pour avoir MAX(ID_voulu) auquel on rajoute 1 ? ou bien y a une manière plus somple ?

Merci d'avance... =)

PS : Sais-tu s'il est possible d'upgrader la version de SQLite3 livré avec XAMPP 1.5.3a en copiant la dernière version de SQLite3 (3.3.6 je crois ?) quelque part ?

# Re: Impossible d'exécuter des requêtes avec mozStorage

Envoyé par : thefab

Date : 14/08/2006 15:16

une requête pour avoir MAX(ID_voulu) auquel on rajoute 1

Oui, tu peux combiner les 2 requêtes (récupération de l'id et insertion) en une seule:

INSERT INTO table VALUES((SELECT MAX(id) + 1 FROM table), 'Suivant');

A tester si ça fonctionne aussi pour la première fois car MAX(id) + 1 retourne NULL

# Re: Impossible d'exécuter des requêtes avec mozStorage

Envoyé par : Raphael

Date : 14/08/2006 17:25

Oki, merci beaucoup pour la requête, ça va bien me servir...

Sinon, pour le problème d'insertion à l'aide de SQLite Manager dans une base SQLite 3.2.8 ? La version utilisée par XulRunner est-elle si incompatible que ça avec les précédentes ? Cela me fait un peu peur quant à la perennité de mes données =/

# Re: Impossible d'exécuter des requêtes avec mozStorage

Envoyé par : jreeman

Date : 15/08/2006 00:52

MonsieurN a écrit:

J'ai réussi à faire fonctionner mozStorage sous Fx
1.5.0.4 sous Windows XP (pas testé ailleurs).
Voici le code utilisé :

netscape.security.PrivilegeManager.enablePrivileg
e('UniversalXPConnect');
var file =
Components.classes["@mozilla.org/file/directory_se
rvice;1"].getService(Components.interfaces.nsIProp
erties).get("ProfD",
Components.interfaces.nsIFile);
file.append("test.sqlite");

var storage =
Components.classes["@mozilla.org/storage/service;1
"].getService(Components.interfaces.mozIStorageSer
vice);
var db = storage.openDatabase(file);

// A mettre si aucune table ni aucun
enregistrement n'est créé
db.executeSimpleSQL("CREATE TABLE foo (a
INTEGER)");
db.executeSimpleSQL("INSERT INTO foo
VALUES(12)");

var statement =
Components.classes['@mozilla.org/storage/statement
-wrapper;1'].createInstance(Components.interfaces.
mozIStorageStatementWrapper);
var query = db.createStatement("SELECT * FROM foo
WHERE a = 12");
statement.initialize(query);

while(statement.step()) {
alert(statement.row.a); // Affiche 12
}

Maintenant je m'attaque à XulRunner :)

Bonjour,

c'est sympa, j'ai exécuté ce script sans erreur sur firefox 1.5.0.6, mozstorage 0.0.1+.

Avec sqlite manager 0.1.2, je vois bien mes tables mais pas les données dans les tables, j'ai aussi un message "not an error".

D'où peut venir le problème ?

# Re: Impossible d'exécuter des requêtes avec mozStorage

Envoyé par : thefab

Date : 15/08/2006 12:01

Avec sqlite manager 0.1.2, je vois bien mes tables mais pas les données dans les tables, j'ai aussi un message "not an error".

J'y crois pas y'a des personnes qui utilisent mon SQLite Manager...

"not an error" c'est parce que mon code n'est pas trés propre: si il y a une exception j'affiche l'erreur de SQLite même si l'erreur ne vient pas de lui.

sans erreur sur firefox 1.5.0.6, mozstorage 0.0.1+

Je vais essayer, pour l'instant j'ai tester avec XULRunner 1.9a1 et Firefox 2.0b1, il y a visiblement des incompatibilités avec mozStorage...

Fabrice

Aller à la page :  1 2 3 4 5 6

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.