在我的SQLite安装程序类中,我有一个DbHelper,它需要一个Context作为它的一部分。要设置上下文,我只在我的SQLite类中使用一个构造函数,它需要一个上下文作为参数的一部分。
但我刚遇到一个问题。当我试图从一个不是Activity的类中调用我的SQLite类时,我不能使用context classname.this
,这会让我烦恼。
我也尝试这样做来声明一个上下文:
protected Context context;
然后稍后称之为:
SetSql PlayerObject = new SetSql(This.context);
但这也不起作用。
有什么建议吗?
答案 0 :(得分:6)
像这样传递应用程序上下文
SetSql PlayerObject = new SetSql(this.getApplicationContext());
现在它应该可以正常工作。
答案 1 :(得分:-1)
public class DBHelper extends SQLiteOpenHelper {
private static final String TAG = "DBHelper";
private static final int DB_VERSION = 1;
private Context context;
private String DB_PATH;
private String DB_NAME;
private String TABLE_NAME;
private boolean booCreate;
private String createString;
private SQLiteDatabase myDataBase;
public DBHelper(Context context, String db_name, String table_name,
boolean booCreate, String createString) {
super(context, db_name, null, DB_VERSION);
this.context = context;
this.DB_NAME = db_name;
this.DB_PATH = "/data/data/" + FindPackageName() + "/databases/";
Log.d(TAG, "DBPATH=" + DB_PATH);
this.TABLE_NAME = table_name;
this.createString = createString;
this.booCreate = booCreate;
Log.d(TAG,"booCreate=" + String.valueOf(this.booCreate));
try {
createDataBase();
} catch (IOException e) {
throw new Error("Unable to Create Database");
}
}
并在您的活动中
dbHelper = new DBHelper(this, this.getString(R.string.db_name_contact),
this.getString(R.string.table_name_contacts), true, createString);
观看此视频并从此tutorial
的第III部分下载代码