IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flex Discussion :

SQLite et SQLMode.UPDATE [AIR]


Sujet :

Flex

  1. #1
    Membre confirmé Avatar de Blaede
    Profil pro
    Inscrit en
    Août 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 120
    Par défaut SQLite et SQLMode.UPDATE
    Hello,

    J'ai un petit souci avec la DB SQLite que j'utilise dans mon application AIR.
    Quand je lance l'applic depuis Eclipse, tout fonctionne très bien mais quand je lance la version installée, impossible de faire un update sur la DB, il ne mémorise pas mes changements.

    La DB se trouve dans le folder src/resources/db de mon projet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    databaseFile = File.applicationDirectory;
    databaseFile = databaseFile.resolvePath("db/database.sqlite");
    Quelqu'un peut me dire pourquoi j'arrive à sauver les changements depuis l'IDE et pas de puis l'install ?

    Merci d'avance !

  2. #2
    Membre confirmé Avatar de Blaede
    Profil pro
    Inscrit en
    Août 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 120
    Par défaut
    Ok j'ai trouvé, l'application directory est read-only

    Il faut utiliser File.applicationStorageDirectory;

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 821
    Par défaut
    C'est justement ce que j'allais te répondre lorsque j'ai vu ta réponse
    c'est typiquement un problème de droit sur les répertoires
    a+

  4. #4
    Membre confirmé Avatar de Blaede
    Profil pro
    Inscrit en
    Août 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 120
    Par défaut
    Bon j'ai un autre problème, il semblerait que mon applic ne trouve la DB que lorsque je la lance depuis Eclipse. Lorsque je crée un .air et que je l'installe, que ce soit sur PC ou Mac, l'applic ne trouve pas la DB...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var databaseFile:File;
    databaseFile = File.applicationStorageDirectory;
    databaseFile = databaseFile.resolvePath("db.sqlite");
    Le fichier SQLite de la db se trouve dans scr/main/resources/db

    Qu'est-ce qui m'a échapé ?

    Merci d'avance !

  5. #5
    Membre confirmé Avatar de Blaede
    Profil pro
    Inscrit en
    Août 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 120
    Par défaut
    J'ai trouvé la solution. Je prends le fichier de la db dans l'application directory et j'en fait une copie dans l'application storage directory :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var dbFile:File = File.applicationDirectory.resolvePath("db/db.sqlite");
    var databaseFile:File = File.applicationStorageDirectory.resolvePath("db.sqlite");
     
    if (!databaseFile.exists) dbFile.copyTo(databaseFile, true);
    En revanche j'ai un nouveau problème...
    Quand je lance l'applic depuis Eclipse, ça tourne sans problème mais quand j'installe l'application et que je la lance, elle rame tellement que ça plante carrément.

    Qqun voit une raison pour laquelle la version installée aurait + de mal à charger les données que lorsque je lance l'applic depuis Eclipse ?

    Merci d'avance !

  6. #6
    Membre confirmé Avatar de Blaede
    Profil pro
    Inscrit en
    Août 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 120
    Par défaut
    J'ai fait un peu de refactoring. Le dataprovider de mon datagrid reçoit maintenant le résultat d'un select sur une vue au lieu d'un object graph complexe. Ça va beaucoup vite du coup lol.

    En revanche ça m'a amené de nouveau un autre problème (grrrr)...

    A partir d'Eclipse, aucune problème, comme d'habitude. Par contre depuis la version installée, aucune donnée ne s'affiche dans les datagrid ! Pourtant j'ai des données qui s'affichent sur d'autres écrans donc l'applic trouve bien le fichier .sqlite et arrive à récupérer des données. Mais mes select sur les vues... niet.

    J'ai fait un insert du contenu de la vue dans une table pour test et oh surprise, quand je fais mon select sur la table, ça fonctionne. Pourquoi l'applic AIR est-elle capable de faire un select sur une table et pas sur une vue ? Alors que ça fonctionne depuis Eclipse !

    Quelqu'un a déjà eu ce problème ?

    Merci pour votre aide.

    Edit : j'ai essayé de faire le select qui correspond à ma vue directement depuis l'applic, les données sont affichées depuis Eclipse mais rien depuis la version installée... Je ne comprends pas cette différence entre la version installée et mon IDE...

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 821
    Par défaut
    Salut
    je ne sais pas la différence entre Eclipse et ton appli car j'utilise Flex Builder mais par contre il se peut que tu aies toujours de problèmes de droits.

    ta base des données est installée avec l'appli sur par exemple File.applicationDirectory

    Dans mon cas, mon appli contrôle File.documentsDirectory. Si la base des données n'existe pas (première installation), il la copie, sinon il pointe sur cet emplacement (File.documentsDirectory)

    je n'ai jamais utilisé File.applicationStorageDirectory mais j'ai le vague souvenir d'avoir eu des soucis aussi. Par contre avec File.documentsDirectory tu es sur de ne pas en avoir.

    Je n'ai aucune idée si je réponds ou pas à ton problème en fait!!!!
    mais je te dis ce que je fais au cas où.
    fais un test en plaçant ta base sur un répertoire moins contraignant comme c'est le cas de "Documents" on ne sait jamais

  8. #8
    Membre confirmé Avatar de Blaede
    Profil pro
    Inscrit en
    Août 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 120
    Par défaut
    Merci bcp pour ta réponse Garra. Je vais faire un test.

    Cela dit, comme je le disais, j'ai des données en provenance de la DB qui s'affichent sur d'autres écrans. Je ne pense donc pas qu'il y ait un problème de droits sur le répertoire de la DB...

    Edit: je confirme, cela ne change rien. Fonctionne dans Eclipse, ne fonctionne pas via l'applic.

    C'est sûrement lié à l'implémentation de SQLite mais je suis surpris d'être le seul à avoir ce problème

  9. #9
    Membre confirmé Avatar de Blaede
    Profil pro
    Inscrit en
    Août 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 120
    Par défaut
    Une de mes tables contenait des string vides au lieu d'une valeur nulle dans un champ de type numérique...

    C'était la cause de tous mes problèmes... tout fonctionne parfaitement maintenant.

    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. UPDATE et concaténation en sqlite
    Par _FaFa_ dans le forum Langage SQL
    Réponses: 1
    Dernier message: 14/10/2010, 21h20
  2. debutant/sqlite et update problème de syntaxe
    Par Mic92 dans le forum Général Python
    Réponses: 3
    Dernier message: 05/08/2010, 19h13
  3. SQL avec sqlite - insert, update
    Par Seth77 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 06/07/2008, 11h13
  4. [SQLite] Update via PHP
    Par Blueangel3109 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/03/2008, 13h03
  5. [SQLite] update en sqlite
    Par patk29 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 29/04/2007, 08h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo