如何以静态方式访问我的SQLite数据库?

时间:2013-12-27 19:42:30

标签: java android sqlite

我想知道如何以静态方式访问我的Android应用程序中的SQLite数据库。 当我想访问数据库时,我总是使用它:

MySQLiteHelper dbHandler = new MySQLiteHelper(this, "PinDB", null, 4);

这是MySQLiteHelper的构造函数:

public MySQLiteHelper(Context context, String name, CursorFactory factory, int version){
    super(context, DATABASE_NAME, factory, DATABASE_VERSION);
}

现在,我必须以静态方式访问数据库以获取我想要使用的方法。但我不知道如何获得活动的背景(这)。 我尝试过getApplicationContext()等方法,但它们似乎都不起作用。

那么,是否可以将MySQLiteHelper(this,"PinDB", null, 4);更改为这样的内容? MySQLiteHelper(MyActivity, "PinDB", null, 4);

如果您需要更多信息,请询问!

提前致谢

1 个答案:

答案 0 :(得分:0)

我使用Singleton访问Android中的SQLite数据库。我认为这种模式也适合你的用例。

Session.java(Singleton类)

public class Session
{
    private static DbUtil; // static DBUtil

    protected Session() {
        //
    }

    public static Session getInstance() {
        if (instance == null) {
            instance = new Session();
        }
        return instance;
    }

    public void initDBUtil(Context ctx){
        util = new DbUtil(ctx);
    }

    public DbUtil getDbUtil()
    {
      return util;
    }

}

DbUtil.java(扩展SQLiteOpenHelper的类)

public class DbUtil extends SQLiteOpenHelper
{
    public DbUtil(Context context) {
        super(context, NAME_DB, null, 1);
        // other init code here...
    }

    // onCreate and other override

}

在入学活动的第一个onCreate方法中,只需执行以下操作:

Session.getInstance().initDBUtil(this);

然后您可以使用Session中的getter来访问DbUtil类:

Session.getInstance().getUtil(). ... your method here ...