DB4O close() 擦除数据库吗?
我正在使用 db4o 在 Android 应用程序中存储不同的对象。我从服务器获取 json 内容,然后将它们放入存储在 db4o 文件中的对象(此处为联系人)。
ObjectContainer mainDB = Db4oEmbedded.openFile(dbConfig(), DB_MAIN);
mainDB.store(aContact);
现在,如果我直接进行查询以从数据库中获取它们,它就可以工作。
try {
ObjectSet<Contact> result = db.queryByExample(Contact.class);
contacts = new ArrayList<Contact>(result);
} catch (Exception e) {
e.printStackTrace();
}
我可以在数组列表上循环,联系人就在那里,我可以打印他们的名字和其他字段。但现在如果我关闭 de db :
mainDB.close();
如果我用相同的代码重新打开它,里面就没有任何东西了,contacts.size() 返回 0。 怎么了?有什么想法吗?提前致谢...
I'm using db4o to store different objects in an android application. I get json contents from a sever then them into Objects (contacts here) that I store in a db4o file.
ObjectContainer mainDB = Db4oEmbedded.openFile(dbConfig(), DB_MAIN);
mainDB.store(aContact);
Now if I directly make a query to get them back from the DB, it works.
try {
ObjectSet<Contact> result = db.queryByExample(Contact.class);
contacts = new ArrayList<Contact>(result);
} catch (Exception e) {
e.printStackTrace();
}
I can loop on the arraylist and the contacts are there, I can print their names and other fiels. But now if I close de db :
mainDB.close();
If I reopen it with the same code, there's nothing inside anymore, contacts.size() returns 0.
What's wrong? Any idea? Thanks in advance...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您尝试使用 SODA 查询而不是 querybyexample 是否有效?
If you try a SODA query rather than querybyexample it works?
Environment.getExternalStorageState() 的结果是什么?
目录可能有问题。
如果您尝试 Context.getExternalFilesDir() 作为目录或 getExternalStoragePublicDirectory() 会发生什么?
如果您在打开容器时使用此目录会发生什么?
ctx.getDir("数据", 0) + "/" + "db.file";
其中 ctx 是应用程序上下文。
What's the result of Environment.getExternalStorageState()?
There might be a problem with the dir.
What happens if you try Context.getExternalFilesDir() as directory or getExternalStoragePublicDirectory()?
What happens if you use this dir when opening the container?
ctx.getDir("data", 0) + "/" + "db.file";
where ctx is the app context.