关于不同的activity获得SQLite对象

我创建了一个SQLite以及操作这个数据库的类,代码如下
这是数据库的类
public class account extends SQLiteOpenHelper {
private static final int VERSION = 1;// 定义数据库版本号
private static final String DBNAME = "account.db";// 定义数据库名
public account(Context context){// 定义构造函数

    super(context, DBNAME, null, VERSION);// 重写基类的构造函数
}

@Override
public void onCreate(SQLiteDatabase db){// 创建数据库
    db.execSQL("create table tb_pname(id INTEGER PRIMARY KEY AUTOINCREMENT,packageName varchar(20))");// 创建表,表的一列为packageName,一列为主键id,id的值可递增
    //db.execSQL("create table tb_pwd (password varchar(20))");//创建密码表
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)// 覆写基类的onUpgrade方法,以便数据库版本更新
{

}

}
这是操作数据库的类
public class PwdDAO {
private account helper;// 创建DBOpenHelper对象
private SQLiteDatabase db;// 创建SQLiteDatabase对象
private static final String USER_TABLE="tb_pname";
public PwdDAO(Context context)// 定义构造函数
{
helper = new account(context);// 初始化account对象
db=helper.getWritableDatabase();//获得操作数据库的对象
}
public account getHelper(){
return helper;
}
我在mainActivity中创建了数据库的实例,并获得操作对象的代码如下
pwdDAO=new PwdDAO(this);//首先创建数据库
helper=pwdDAO.getHelper();
SQLiteDatabase db=helper.getWritableDatabase();
那么问题来了,我想要在另一个 activity中也获得这个数据库的操作对象,应该怎样做,如果再执行如同上面的语句,岂不是又创建了一个数据库,这个问题应该怎样解决
求解,各位大神

2个回答

你应该用单例模式,内部有一个静态的变量,从始至终就这一个

一般做成单例的方式

 public class DbHelpBussiness {
    private static DbHelpBussiness dbBus= null;
      private account dbHelper = new account();
      public static DbHelpBussiness getInstance(){
            if(dbBus==null){
                dbBus = new DbHelpBussiness();
            }
            return dbBus;
        }
        public account getHelper(){
          return dbHelper;
        }
}
使用
DbHelpBussiness.getInstance().getHelper();
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐