Android SQLiteOpenHelper类中的上下文是什么。如果我们提供不同类的不同上下文怎么办?

Android SQLiteOpenHelper类中的上下文是什么。如果我们提供不同类的不同上下文怎么办?,android,sqlite,Android,Sqlite,当我用SQLiteOpenHelper类扩展我的DatabaseClass时,我必须实现构造函数,它的参数中必须包含上下文。如果我必须将此数据库与我的其他类一起使用,则上下文可能会更改。当我提供不同的上下文时,会做哪些更改 public class DatabaseClass extends SQLiteOpenHelper { static String TABLE_NAME = "hammad"; static String DATABASE_NAME = "databases.db";

当我用SQLiteOpenHelper类扩展我的DatabaseClass时,我必须实现构造函数,它的参数中必须包含上下文。如果我必须将此数据库与我的其他类一起使用,则上下文可能会更改。当我提供不同的上下文时,会做哪些更改

public class DatabaseClass extends SQLiteOpenHelper {

static String TABLE_NAME = "hammad";
static String DATABASE_NAME = "databases.db";

SQLiteDatabase database;

public DatabaseClass(Context context) {
    super(context, DATABASE_NAME, null, 1);
    Log.i("xcv", "Constructor called");
    this.database = this.getWritableDatabase();
}

@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
    Log.i("xcv", "OnCreate");
    try {
        sqLiteDatabase.execSQL("create table student (id integer primary key autoincrement,name varchar)");
        Log.i("xcv", "On Create query Table created");
    } catch (Exception ffff) {
        Log.i("xcv", "2:"+ffff.getMessage());
    }

}
StartPage.java

public class StartPage extends AppCompatActivity {

DatabaseClass database;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_start_page);

    setLoginBtn(); // Set Login Btn


    database=new DatabaseClass(this);

     }
}
Class2.java

public class Class2 extends AppCompatActivity {

    DatabaseClass database;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_start_page);

        setLoginBtn(); // Set Login Btn


        database=new DatabaseClass(this);

    }
}
“上下文可能会改变”你应该先弄清楚这句话。。。是的,每次通过从不同类调用来创建数据库的新实例时,上下文都会更改,并且必须更改。。。。Bcoz上下文表示此活动具有访问数据库的权限。。。。因此,当您传递xyz活动的
“this”
,则xyz有权访问数据和修改数据库中的数据。。。这就像在控制数据库资源之前向数据库出示身份证一样

您还可以通过传递上下文从任何类访问数据库,您可以检索数据、修改数据和关闭连接


场景:
就像家里的一台冰箱,你只能打开,看里面有什么。。你可以拿些东西吃。。。或者你可以在某个地方。。。同样的事情也可以由任何家庭成员来做。。。而
“此”
“上下文”
是个人

SQLiteOpenHelper
使用传入的
上下文
查找数据库文件所在的应用程序包专用数据目录。该包是应用程序的
AndroidManifest.xml
中声明的
包,而不是类文件的Java包


应用程序中的所有
Context
s都具有相同的包私有数据目录,并且数据库可以与任何有效的
Context

一起正常工作,因此,如果在另一个包上有一个数据库类,它与包私有数据目录相同呢???它是应用程序的包(在应用程序清单文件中),不是java类的java包。谢谢你也可以使用
getApplicationContext()
。这在任何地方都是一样的