android – 我应该如何正确打开和关闭我的数据库

前端之家收集整理的这篇文章主要介绍了android – 我应该如何正确打开和关闭我的数据库前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个应用程序,它将一些数据存储在sqlite数据库中.此外,我在我的应用程序中进行了大量查询和重新查询.我在其中有大约15个活动.并且所有人都使用数据库查询数据.
但我正在做的是在每个活动中打开我的数据库并在每个活动的onDestroy {…}中关闭它.

问题是onDestroy {…}可能永远不会被调用,有时我的应用程序会保持很长一段时间,并且我会从一个活动切换到另一个开放多次我的数据库.

有时我会得到像数据库这样的错误太多次打开而且从未关闭过.

在我从中获取数据并关闭它后,我会尝试完全关闭我的数据库…转到我的下一个活动并重新打开等等…..
但问题是,在某些活动中,我从其他活动中回来……关闭我的数据库并回到那个活动会产生一个很大的力量关闭.

我想做的是在我的应用程序开始时打开我的数据库并在结束时关闭它,但我面临两个问题:

1.
我应该让我的sqliteOpenHelper类成为一个单独的吗?…获取它的一个实例…在我的第一个活动中打开它然后在我的下面的活动中获取我已经打开的数据库的实例/ ???

2.我的应用程序结束了????我怎么知道应用程序的结束位置以及关闭数据库的位置.

编辑:

public class DBAdapter extends sqliteOpenHelper {

    public DBAdapter(Context context) {
        super(context,DATABASE_NAME,null,1);
        this.myContext = context;

    }


    public void openDataBase() throws sqlException {




        String myPath = DATABASE_PATH + DATABASE_NAME;
        db = sqliteDatabase.openDatabase(myPath,sqliteDatabase.OPEN_READWRITE);


    }

}

这是我班上管理我的DB的一段代码.为了使这个单例,我应该使用一个构造函数

private DBAdapter()
{



//nothing in here

}

但这对于sqliteOpenHelper来说是未定义的

编辑决赛:
这就是我根据zirael的建议做到的:

package com.Server_1;

import android.app.Application;

public class MyApplication extends Application{

private static DBAdapter db;

public void onCreate()
{

    db=new DBAdapter(getApplicationContext());
    db.createDatabase();
    db.openDataBase();
}

public static DBAdapter getDatabaseAdapter()
{
    return db;
}


}

在我需要数据库连接的每个活动中,我都这样做:

MyApplication myApplication = (MyApplication) this.getApplication();

DBAdapter db= myApplication.getDatabaseAdapter();

最后我的清单看起来像:

<application  android:icon="@drawable/icon"  
android:label="@string/app_name"
  android:name=".MyApplication" 
  android:debuggable="true">

解决方法

在我的应用程序中,我在myApplication类中打开了与数据库的连接(扩展Application的自定义类 – 它应该与androidManifest中的应用程序命名相同).

AndroidManifest.xml中

<application android:label="@string/app_name" 
    android:name="com.mypackage.MyApplication " android:debuggable="true">

MyApplication .java

public class MyApplication extends Application {

    private DatabaseAdapter dbAdapter;


    @Override
    public void onCreate() {
        dbAdapter = new DatabaseAdapter(getApplicationContext());
        dbAdapter.open();
    }

在每个需要数据库连接的类中,我只需使用:

MyApplication myApplication = (MyApplication) this.getApplication();
DatabaseAdapter dbAdapter= myApplication.getDatabaseAdapter();

MyApplication在每次应用程序启动时自动运行.这样我只保留了一个与DB的连接,因此当应用程序从内存中删除时没有任何问题就关闭了.

猜你在找的Android相关文章