我想知道如何以静态方式访问我的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);
如果您需要更多信息,请询问!
提前致谢
答案 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 ...