gpt4 book ai didi

java - db4o openfile 文件格式不兼容

转载 作者:太空狗 更新时间:2023-10-29 14:53:19 24 4
gpt4 key购买 nike

我正在尝试为 db4o 创建一个通用的助手类。

我创建了一个静态类,它应该在每个应用程序页面中充当助手。

这是我的代码:

public final class DatabaseHelper implements IDatabaseHelper{

private static ObjectContainer database;
private static final String DATABASE_NAME = "MyDB.db4o";
private static final int DATABASE_MODE = 0;
private static Context ctx;

private DatabaseHelper(){
}

public DatabaseHelper(Context context) {
ctx=context;
database=null;
}

public void OpenDatabse(){

try {
if (database == null) {
EmbeddedConfiguration nc = Db4oEmbedded.newConfiguration();
database = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(),
db4oDBFullPath());
}
} catch (Exception ie) {
Log.e(DatabaseHelper.class.getName(), ie.toString());
}


}

private String db4oDBFullPath() {
return ctx.getDir("data", DATABASE_MODE) + "/" + DATABASE_NAME;
}

public void CloseDatabase() {
if (database != null) {
database.close();
}
}

public ObjectContainer getDatabaseSession() {

return database.ext().openSession();
}

}

我的问题出在 OpenDatabase() 方法中。我总是得到

com.db40.ext.Db4oException: File format incompatible: '/data/data/personal.pier.appname/app_data/MyDB.db4o'

我尝试添加/删除最终属性。我试着一步一步地调用它。我是 db4o 的新手,我真的不知道该怎么做。

更一般地说,是否可以创建一个通用的助手类?任何帮助将不胜感激。谢谢

最佳答案

是的,可以创建这样一个通用的帮助类。 final 属性适用于 db4o。我还建议捕获整个堆栈跟踪以从错误中获取更多信息:

Log.e(DatabaseHelper.class.getName(), ie.toString());

如消息所述,由于某种原因文件格式不匹配。所以接下来的问题是:

  • 由于某种原因,在调用 Db4oEmbedded.openFile() 时文件是否已经存在?
  • 数据库是在其他平台(如 C#)上创建然后复制过来的吗?那是行不通的。 Java 和 C# 版本无法正确读取彼此的数据库?
  • 其他文件操作是否适用于该 android 文件?是否可以使用 RandomAccessFile 读取和写入该文件位置?

关于java - db4o openfile 文件格式不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33542489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com