2017-01-09 5 views
0

Я новичок в программировании на Android и просто начинаю использовать базу данных sqlite. В моем приложении я закрываю базу данных onpause и ondestroy.Повторное открытие базы данных после onpause

Однако при использовании приложения я пытаюсь повторно открыть базу данных/приложение после его закрытия на короткое время, но продолжал иметь сообщение об ошибке «не удалось открыть уже закрытую базу данных»?

Пожалуйста, помогите. Вот выдержка из java-файла;

public class Apple extends Activity { 

DbA myDb; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.apple_layout); 
    openDB(); 
    } 

    private void openDB() { 
myDb= new DbA(this); 
myDb.open(); 
} 

    @Override 
    protected void onDestroy() { 
super.onDestroy(); 
myDb.close(); 
    } 


    @Override 
    protected void onResume() { 
super.onResume(); 
myDb.open(); 
} 

    @Override 
protected void onPause() { 
super.onPause();   
myDb.close(); 
    } 

Скажите, пожалуйста, что я делаю неправильно.

+0

Почтовый индекс для класса «DBA» вы используете слишком пожалуйста. – Okas

+0

Вам не нужно открывать базу данных при возобновлении или при приостановке. Откройте и закройте его только до и после использования базы данных. –

ответ

0

По моему мнению, нет необходимости поддерживать открытое соединение с базой данных всего жизненного цикла деятельности.

Обычно я получаю доступную для записи базу данных, когда я собираюсь выполнить действие и закрыть, когда он закончит.

Например, для добавления записей, вы можете иметь следующий метод

public void addItem(Item item) { 
    if (item == null) { 
     return; 
    } 

    // get writable database and begin transaction 
    final SQLiteDatabase database = dbHelper.getWritableDatabase(); 
    database.beginTransaction(); 

    // INSERT ITEM IN DATABASE 

    // End transaction and close connection 
    database.setTransactionSuccessful(); 
    database.endTransaction(); 
    database.close(); 
} 
Смежные вопросы