2

我在我的应用程序 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)

我不知道问题可能是什么。

4

1 回答 1

7

仅使用 myDataBase.execSQL("detach " + dbAlias)
您不使用数据库的路径+名称,只使用您提供的别名。

于 2013-07-10T20:21:23.113 回答