【发布时间】:2013-05-10 14:52:21
【问题描述】:
我在我的应用程序中使用了 2 个数据库。我有一个使用最多的主数据库,有时我需要第二个数据库。因此,为了使用它,我使用这种方法将它附加到主数据库:
public void attachDb(String dbName, String dbAlias){
String dbPath = context.getDatabasePath(dbName).getAbsolutePath();
myDataBase.execSQL("attach database '" + dbPath + "' as " + dbAlias);
}
现在我的问题是,当我退出屏幕并获得强制关闭时,我想分离第二个数据库。我尝试使用以下代码将其分离:
public void detachDatabase(String dbName){
String dbPath = context.getDatabasePath(dbName).getAbsolutePath();
myDataBase.execSQL("detach database '" + dbPath + "'");
}
错误日志是这样写的:
05-13 11:48:23.173: ERROR/AndroidRuntime(7338): FATAL EXCEPTION: Thread-145
android.database.sqlite.SQLiteException: error code 1: SQL logic error or missing database
at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:92)
at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1899)
at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1839)
at com.example.DBManagerBase.detachDatabase(DBManagerBase.java:168)
at com.example.run(MyClass.java:233)
at java.lang.Thread.run(Thread.java:856)
我不知道问题可能是什么。
【问题讨论】:
-
不要附加和分离数据库,使用一个保留多个数据库的适配器。在这里查看答案:stackoverflow.com/questions/4498664/…
-
如果我查询连接两个数据库中的表,该示例是否有效?以我的拙见,我认为如果它们不附加,它是否会起作用。
-
联接仅适用于同一数据库上下文中的表。在任何情况下,您都不能使用 SQL 连接位于不同数据库中的两个表。您需要从每个表中进行选择,并对代码中的结果数据进行连接。
-
@ErikNedwidek 从
ATTACHed 数据库连接表工作正常。 -
@ziziana 请显示整个错误日志。