Forums : Extensions

Aller à la discussion :  Plus récente Plus ancienne

Aller à la page :  1 2 3 4 5 6

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

Envoyé par : thefab

Date : 01/06/2006 09:29

Bonjour,

Je teste actuellement l'extension mozStorage qui permet d'accéder à une base de données SQLite. Malheureusement je n'arrive pas à exécuter des requêtes: ni avec executeSimpleSQL() ni avec createStatement(), j'obtiens toujours NS_ERROR_FAILURE.

Le début du code à pourtant l'air de fonctionner:

var storage = Components.classes["@mozilla.org/storage/service;1"]
  .getService(Components.interfaces.mozIStorageService);

var file = Components.classes["@mozilla.org/file/directory_service;1"]
  .getService(Components.interfaces.nsIProperties)
  .get("ProfD", Components.interfaces.nsILocalFile);
file.append("test.db");

var db = storage.openDatabase(file);

Car db est bien un mozIStorageConnection et db.connectionReady me retourne vrai, par contre:

var query = db.createStatement("SELECT nom, prenom FROM personne;");

Me retourne: Erreur : uncaught exception: Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) mozIStorageConnection.createStatement" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: ... :: test :: line 27" data: no

Firefox 1.5.0.3 sous Windows XP

Une idée, une piste, je suis preneur, merci

Fabrice

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

Envoyé par : MonsieurN

Date : 04/06/2006 21:44

As-tu créé un table voire des enregistrements à ta base de données ? Car dans le cas contraire, c'est normal qu'il te renvoi un message d'erreur. J'ai eu le même problème au début et ça venait de là.

Chez moi ça fonctionne sans problème sous Firefox 2 Alpha 3 mais sous Firefox 1.5 avec l'extension mozStorage, j'ai un problème quand je veux récupérer les données. il faut normalement faire statement.columnName mais il me retourne "undefined". Je vais bien réussir à trouver pourquoi. En tout cas ca fonctionne un peu :)

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

Envoyé par : thefab

Date : 06/06/2006 09:31

As-tu créé un table voire des enregistrements à ta base de données ?

Oui, table et enregistrements.

il faut normalement faire statement.columnName mais il me retourne "undefined"

T'as de la chance :-), moi j'arrive pas jusque là ! Et en faisant statement.row.columnName

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

Envoyé par : thefab

Date : 06/06/2006 10:00

Effectivement mozStorage fonctionne avec Firefox 2 (sous Windows aussi et sans installer d'extension) (ça m'avance bien, je veux l'utiliser avec XULRunner ;-)

Apparement l'API a un peu changée par rapport à la documentation de l'extension. Ainsi on n'obtient plus le nom de la base de données avec .databaseName mais un nsIFile avec .databaseFile et il faut bien utiliser statement.row.columnName pour accéder aux données.

Fabrice

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

Envoyé par : chris

Date : 06/06/2006 17:16

Psssstt thefab, si tu parviens à quelque chose avec xulrunner 1.8.0.1, tu me fais signe stp ? :-)

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

Envoyé par : laurentj

Date : 07/06/2006 13:20

Et si vous arrivez vraiment à quelque chose, il serait vraiment sympa de mettre tout ça dans le wiki ;-)

Merci !

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

Envoyé par : MonsieurN

Date : 08/06/2006 09:10

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.enablePrivilege('UniversalXPConnect');
var file = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile);
file.append("test.sqlite");

var storage = Components.classes["@mozilla.org/storage/service;1"].getService(Components.interfaces.mozIStorageService);
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 :)

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

Envoyé par : MonsieurN

Date : 20/07/2006 12:07

Je remonte ce post, car j'ai réalisé une application XulRunner avec SQLite. Pour ça, j'ai juste pris la build du tronc. Je ferais prochainement un article sur Xulfr pour expliquer un peu tout. En tout cas, vous pouvez télécharger l'application à cette adresse : http://www.boldr.fr/weblog/post/2006/07/(..) pour voir un peu comment ça tourne.

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

Envoyé par : Raphael

Date : 20/07/2006 22:34

Je vais t'appeler Dieu ^^ Exactement ce que je cherchais ! J'ai hâte que tu remplisses le Wiki de ton expérience ! =D

Un grand merci MonsieurN.

PS : Utilises-tu Sqlite 2 ou 3 ? Apparemment les formats sont assez incompatibles ? Quel est celui qui a le plus de chance d'être pérenne ? Je me pose actuellement la question pour un BDD qui contiendrait quelques milliers d'enregistrements, voire quelques dizaines de milliers tout au plus...

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

Envoyé par : MonsieurN

Date : 20/07/2006 22:57

Apparemment c'est SQLite 3 que mozStorage utilise par défaut pour la création d'une base de données.

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.