我在我的应用程序中使用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)
我不知道问题是什么。
答案 0 :(得分:7)
仅使用myDataBase.execSQL(“detach”+ dbAlias)
您不使用数据库的路径+名称,只使用您提供的别名。