首页 > 解决方案 > 具有数据库名称参数的构造函数

问题描述

我想为 DatabaseOpenHelper 创建构造函数,它接受数据库名称的参数。我试着做这样的事情:

    public DatabaseOpenHelper(Context context, String DB_NAME){
        this.DB_NAME = DB_NAME; //There is error
        super(context, DB_NAME, null, 1);
        APP_DATA_PATH = context.getApplicationInfo().dataDir;
        this.context = context;
    }

但是我遇到了错误,因为super(context, DB_NAME, null, 1);必须在之前this.DB_NAME = DB_NAME; 所以有什么方法可以创建构造函数,我可以在其中指定要在对象中打开的数据库?

标签: javaandroid

解决方案


你可以这样写:

public DatabaseOpenHelper(Context context, String DB_NAME){
        super(context, DB_NAME, null, 1);
        this.DB_NAME = DB_NAME; 
        APP_DATA_PATH = context.getApplicationInfo().dataDir;
        this.context = context;
    }

因为最终,您将相同的DB_NAME变量传递给超级构造函数,而不管您将它放在构造函数中的什么位置。

您只需要使用所需的名称调用构造函数:

new DatabaseOpenHelper(this,"mydb1");
new DatabaseOpenHelper(this,"mydb2");

推荐阅读