Envoyé par : joliclic
Date : 11/07/2007 19:26
Bonjour, je ne dois pas avoir les yeux en face des trous, je n'arrive pas à utiliser bindInt32Parameter pour faire un simple SELECT sur une base sqlite, alors qu'il fonctionne en INSERT.
Voilà mon testcase, est ce que quelqu'un voit mon erreur ?
const Ci = Components.interfaces; const Cc = Components.classes; const Cr = Components.results; var dirSvc = Cc["@mozilla.org/file/directory_service;1"] .getService(Ci.nsIProperties); var dbFile = dirSvc.get("ProfD", Ci.nsIFile); dbFile.append("test_storage.sqlite"); var storageService = Cc['@mozilla.org/storage/service;1'] .getService(Ci.mozIStorageService); var db = storageService.openDatabase(dbFile); if (db && !db.tableExists('foo')) { db.executeSimpleSQL("CREATE TABLE foo (id INTEGER)"); var sql = "INSERT INTO foo (id) VALUES (?1)" var statement = db.createStatement(sql); statement.bindInt32Parameter(0, 1); statement.execute(); statement.reset(); } // ceci marche sans problème, pas d'utilisation de bindInt32Parameter()) var statement_1 = db.createStatement("SELECT id FROM foo WHERE id = 1 LIMIT 1"); statement_1.execute(); var resu_1; if (statement_1.executeStep()) { resu_1 = "resu_1 : " + statement_1.getInt32(0); } else { resu_1 = "resu_1 : pas de résultat"; } statement_1.reset(); // utilisation de bindInt32Parameter(), la requete ne renvoie pas de ligne... var statement_2 = db.createStatement("SELECT id FROM foo WHERE id = ?1 LIMIT 1"); statement_2.bindInt32Parameter(0, 1); statement_2.execute(); var resu_2; if (statement_2.executeStep()) { resu_2 = "resu_2 : " + statement_2.getInt32(0); } else { resu_2 = "resu_2 : pas de résultat"; } statement_2.reset(); alert(resu_1 + "\n" + resu_2); try { dbFile.remove(true); } catch(e) {}
Sans passer par bindInt32Parameter je récupère bien la valeur 1, mais avec, pas de ligne retournée :( .
Envoyé par : joliclic
Date : 23/07/2007 18:35
j'ai eu la solution sur irc, c'était bien une ânerie grosse comme çà.
on utilise execute() ou executeStep(), mais pas l'un suivi de l'autre...
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.