2010-11-23 8 views
0

私はdb4oを使ってさまざまなオブジェクトをAndroidアプリケーションに保存しています。私は、db4oファイルに格納されているオブジェクト(ここでは連絡先)にseverのコンテンツをjsonのコンテンツから取得します。DB4O閉じる()DBを消去しますか?

ObjectContainer mainDB = Db4oEmbedded.openFile(dbConfig(), DB_MAIN); 
mainDB.store(aContact); 

ここで、DBから戻すクエリを直接作成すると、それが機能します。

try { 
ObjectSet<Contact> result = db.queryByExample(Contact.class); 
contacts = new ArrayList<Contact>(result); 
} catch (Exception e) { 
e.printStackTrace(); 
} 

私はarraylistにループすることができ、連絡先はそこにあります、私は彼らの名前と他のフィールドを印刷することができます。しかし、今、私はデデシベルを閉じた場合:私は同じコードでそれを再度開く場合

mainDB.close(); 

、contacts.size、もはや内部では何もありません()は0 何が問題になっています返しますか?何か案が?ありがとうございます...

+0

エミュレータで実行していますか? DB_MAINはどのように見えますか?あなたの設定(dbConfig())はどのように見えますか?これは通常、db4oがデータベースファイルを見つけて新しいファイルを初期化するときに発生します。 – Vagaus

+0

はそのリンクですか? http://developer.db4o.com/Forums/tabid/98/aft/10178/Default.aspx –

+0

エミュレータとネクサスの両方で動作します。私はDBの場所のためにこのフィールドを持っています: public final static String DB_MAIN = Environment.getExternalStorageDirectory()+ "/circusMain.db4o"; ここではdbConfig(): – Alexis

答えて

1

querybyexampleではなくSODAクエリを試してみたら、それは機能しますか?

+0

SODAクエリでは機能しません:( – Alexis

0

Environment.getExternalStorageState()の結果は何ですか? ディレクトリに問題がある可能性があります。 Context.getExternalFilesDir()をディレクトリまたはgetExternalStoragePublicDirectory()として使用するとどうなりますか?

コンテナを開くときにこのディレクトリを使用するとどうなりますか?

ctx.getDir( "data"、0)+ "/" + "db.file";

ここで、ctxはアプリコンテキストです。