Как закрыть соединение с базой данных в Android - PullRequest
0 голосов
/ 06 января 2012

В настоящее время работает над частью базы данных проекта Android. Основная цель проекта - проанализировать XML-файл и сохранить базу данных для ее анализа. Я открываю базу данных и вставляю данные в базу данных. Но когда я пытаюсь изменить активность, происходит сбой в функции close () базы данных. Я знаю, что я делаю что-то не так здесь. Если кто-нибудь может помочь мне здесь, это будет здорово.

/ * DatabaseManager.java * /

    SQLiteDatabase db;
public DatabaseManager(Context context){
    this.context = context;

    db = context.openOrCreateDatabase(DATABASE_NAME, 0, null);
    }

    public void close(){
    if ( db != null )
    {
        db.close();
    }
    }

/ 1011 **** Activity.java **** 1013 /

 public void onCreate(Bundle savedInstanceState) {

    try{
        super.onCreate(savedInstanceState);
        DB = new DatabaseManager(this);
     }
  }

 public void onDestroy(){
     super.onDestroy();

    if(DB!=null)
        DB.close();
 }

Ошибка:

 E/Database(676): close() was never explicitly called on database '/data/data/org.com.android/databases/MainSQLite.db' 
enter code here

Ответы [ 2 ]

1 голос
/ 06 января 2012

Глядя на свой код, вы корректно закрываете БД, потому что вызываете super.onDestroy (); перед тем как код вызовет метод db.close ().

Попробуйте вызвать его вне метода onDestroy ().

0 голосов
/ 06 января 2012

вот что получается: -)

private DbHelper ourHelper;



private static class DbHelper extends SQLiteOpenHelper{

    public DbHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        // TODO Auto-generated constructor stub
    }}

public void close(){
     ourHelper.close();
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...