gpt4 book ai didi

android - 在 Android 上使用 ORMLite 重新打开连接

转载 作者:太空狗 更新时间:2023-10-29 16:08:44 26 4
gpt4 key购买 nike

我的情况是这样的。我有一个 OrmLiteBaseActivity,其中有我的主菜单。当我按下一个按钮时,我进入“备份模式”,我想从我的网站下载一个备份 sqlite 数据库。问题是,当我尝试上传文件时,我没有收到任何错误,但是直到我关闭并重新打开软件,数据库才会更新。我希望更新是即时的。

我在我的 OrmLiteBaseActivity 上试过这样的东西:

case BACKUP_ID:
getHelper().close();
Intent i = new Intent(this, Backup.class);
this.startActivity(i);
return true;

我转到备份 Activity ,更新文件,然后我想返回,但出现此错误:

11-15 19:27:45.359: ERROR/DatabaseHelper(229): Getting connectionSource called after closed
11-15 19:27:45.359: ERROR/DatabaseHelper(229): java.lang.IllegalStateException
11-15 19:27:45.359: ERROR/DatabaseHelper(229): at com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper.getConnectionSource(OrmLiteSqliteOpenHelper.java:78)
11-15 19:27:45.359: ERROR/DatabaseHelper(229): at com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper.getDao(OrmLiteSqliteOpenHelper.java:171)
11-15 19:27:45.359: ERROR/DatabaseHelper(229): at info.dierrelabs.h4m.ormliteinterface.DatabaseHelper.getPlayerDao(DatabaseHelper.java:159)
11-15 19:27:45.359: ERROR/DatabaseHelper(229): at info.dierrelabs.h4m.team.TeamList.onCreate(TeamList.java:20)
11-15 19:27:45.359: ERROR/DatabaseHelper(229): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-15 19:27:45.359: ERROR/DatabaseHelper(229): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
11-15 19:27:45.359: ERROR/DatabaseHelper(229): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
11-15 19:27:45.359: ERROR/DatabaseHelper(229): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
11-15 19:27:45.359: ERROR/DatabaseHelper(229): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
11-15 19:27:45.359: ERROR/DatabaseHelper(229): at android.os.Handler.dispatchMessage(Handler.java:99)
11-15 19:27:45.359: ERROR/DatabaseHelper(229): at android.os.Looper.loop(Looper.java:123)
11-15 19:27:45.359: ERROR/DatabaseHelper(229): at android.app.ActivityThread.main(ActivityThread.java:4363)
11-15 19:27:45.359: ERROR/DatabaseHelper(229): at java.lang.reflect.Method.invokeNative(Native Method)
11-15 19:27:45.359: ERROR/DatabaseHelper(229): at java.lang.reflect.Method.invoke(Method.java:521)
11-15 19:27:45.359: ERROR/DatabaseHelper(229): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
11-15 19:27:45.359: ERROR/DatabaseHelper(229): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
11-15 19:27:45.359: ERROR/DatabaseHelper(229): at dalvik.system.NativeStart.main(Native Method)

有什么我想念的吗?我假设每次打开新的 OrmLiteBaseActivity 时使用 OrmLiteBaseActivity 都会重新打开数据库。我做错了什么吗?

最佳答案

你没有做错事,但你做的事不典型。

OrmLiteSqliteOpenHelper.getConnectionSource() 中,它记录了一个错误,因为有人在调用 close() 后试图获取连接源:

public ConnectionSource getConnectionSource() {
if (!isOpen) {
// we don't throw this exception, but log it for debugging purposes
logger.error(new IllegalStateException(),
"Getting connectionSource called after closed");
}
return connectionSource;
}

您可以在您的助手中覆盖此方法以抛出消息:

private ConnectionSource connectionSource = null;
@Override
public ConnectionSource getConnectionSource() {
if (connectionSource == null) {
connectionSource = super.getConnectionSource();
}
return connectionSource;
}

这将修复错误日志消息,但问题是副本和新数据库是否有效。您可能想看一下两个数据库代码示例。它维护自己的数据库计数器等您可能需要做的事情:

http://ormlite.com/docs/android-hello-two-dbs

关于android - 在 Android 上使用 ORMLite 重新打开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8127275/

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