2010-11-23 88 views
0

J'utilise db4o pour stocker différents objets dans une application Android. Je reçois le contenu de JSON d'un serveur puis les dans les objets (contacts ici) que je stocke dans un fichier db4o. Maintenant, si je fais directement une requête pour les récupérer à partir de la base de données, cela fonctionne. Je peux boucler sur l'arraylist et les contacts sont là, je peux imprimer leurs noms et d'autres fiels. Mais maintenant, si je ferme de db:DB4O close() efface la base de données?

mainDB.close(); 

Si je rouvre avec le même code, il n'y a rien à l'intérieur retourne plus, contacts.size() 0. Quel est le problème? Une idée? Merci d'avance ...

+0

Courez-vous dans un émulateur? À quoi ressemble DB_MAIN? Comment se présente votre configuration (dbConfig())? Cela arrive généralement lorsque db4o est capable de trouver le fichier de base de données et en initialise un nouveau. – Vagaus

+0

est ce lien lié? http://developer.db4o.com/Forums/tabid/98/aft/10178/Default.aspx –

+0

Je cours à la fois sur l'émulateur et le nexus un. J'ai ce champ pour l'emplacement de la base de données: public final static Chaîne DB_MAIN = Environment.getExternalStorageDirectory() + "/circusMain.db4o"; et voici le dbconfig(): – Alexis

Répondre

1

Si vous essayez une requête SODA au lieu de querybyexample cela fonctionne?

+0

Ne fonctionne pas avec requête SODA :( – Alexis

0

Quel est le résultat de Environment.getExternalStorageState()? Il peut y avoir un problème avec le répertoire. Que se passe-t-il si vous essayez Context.getExternalFilesDir() en tant que répertoire ou getExternalStoragePublicDirectory()? Que se passe-t-il si vous utilisez ce répertoire lors de l'ouverture du conteneur?

ctx.getDir ("données", 0) + "/" + "db.file"; Où ctx est le contexte de l'application.