DB4O close() 擦除数据库吗?

发布于 2024-10-04 03:40:15 字数 620 浏览 6 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

最笨的告白 2024-10-11 03:40:15

如果您尝试使用 SODA 查询而不是 querybyexample 是否有效?

If you try a SODA query rather than querybyexample it works?

月下伊人醉 2024-10-11 03:40:15

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文