2013-05-10 9 views
1

Я использую в своем приложении 2 базы данных. У меня есть основная база данных, которая используется больше всего и в какой-то момент мне нужна вторая база данных. Итак, для того, чтобы использовать его я прикрепил его к основной базе данных, используя этот метод:Android Detach Database

public void attachDb(String dbName, String dbAlias){ 
    String dbPath = context.getDatabasePath(dbName).getAbsolutePath(); 
    myDataBase.execSQL("attach database '" + dbPath + "' as " + dbAlias); 
} 

Теперь моя проблема заключается в том, что я хочу, чтобы отделить 2-ую базу данных, когда я выйти из экрана, и я получаю Force Close. Я попытался снять его, используя этот код:

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 ИСКЛЮЧЕНИЕ: резьбовых 145 android.database.sqlite.SQLiteException: код ошибки 1: SQL логическая ошибка или отсутствует база данных в android.database.sqlite.SQLiteStatement.native_execute (Native Method) в android.database.sqlite.SQLiteStatement.executeUpdateDelete (SQLiteStatement.java : 92) в android.database.sqlite.SQLiteDatabase.executeSql (SQLiteDatabase.java:1899)на android.database.sqlite.SQLiteDatabase.execSQL (SQLiteDatabase.java:1839) в com.example.DBManagerBase.detachDatabase (DBManagerBase.java:168) в com.example.run (MyClass.java:233) на java.lang.Thread.run (Thread.java:856)

*

Я не знаю, что может быть проблема. Кто-нибудь может мне помочь? Я буду очень признателен.

+0

Не прикрепляйте и не отсоединяйте базы данных, используйте один адаптер, который хранит несколько баз данных. См. Ответ здесь: http://stackoverflow.com/questions/4498664/android-multiple-databases-open –

+0

И если я сделаю запрос, который объединяет таблицы из обеих баз данных, этот пример будет работать? По моему скромному мнению, я не думаю, что если он работает, если они не привязаны. – Laura

+0

Соединения работают только в таблицах, которые находятся в одном контексте базы данных. Вы ни в коем случае не можете присоединиться к двум таблицам, которые находятся в отдельных базах данных с SQL. Вам нужно будет делать выборки из каждой из таблиц и выполнять объединение полученных результирующих данных в вашем коде. –

ответ

5

использование только myDataBase.execSQL ("detach" + dbAlias)
Вы не используете путь + к базе данных, просто псевдоним, который вы дали.