Android 数据库如何更新

在数据库升级时,不同版本的数据库,他们定义的表结构完全可能是不一样的,比如版本1的表A有10个列里面有十个数据,而下一个版本2的10个列里面有20条数据。此时我应该怎么做呢?

1、设置一个DB_VERSION

public static final int DB_VERSION = 1;

2、当你要更新表的时候就把DB_VERSION+1,就会触发onUpgrade,数据库就更新了,记得采纳

public DBHelper() {
    // for test
    daoConfig = new DbManager.DaoConfig()
            .setDbName(DB_NAME)
            .setDbVersion(DB_VERSION)
            .setDbDir(Environment.getExternalStorageDirectory())
            .setDbOpenListener(new DbManager.DbOpenListener() {
                @Override
                public void onDbOpened(DbManager db) {
                    db.getDatabase().enableWriteAheadLogging();
                }
            })
            .setDbUpgradeListener(new DbManager.DbUpgradeListener() {
                @Override
                public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
                    updateTable(db, xx.class);
                    
                }
            });
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-08-22
0、本质上是listview绑定Adapter,Adapter关联List,因此List变化后导致Adapter同步变化;再通过调用adapter.notifyDataSetChanged();方法使得listview界面自动更新。操作:1、ListstrName=newArrayList();//实际的数据源2、Adapteradapter=newArrayAdapter(context,R.layout.xmlforitem,strName);//适配器,其中R.layout.xmlforitem是列表中每一项的布局,可以用默认的也可自建,strName则是将数据源绑定到适配器3、listView.setAdapter(adapter);//将适配器绑定到列表显示控件ListView;4、strName.add("TESTONE");//增加一项,引起list变化,Adapter也随之变化;5、adapter.notifyDataSetChanged();//调用notifyDataSetChanged();更新适配器,ListView会自动刷新,notifyDataSetChanged()方法可能需要在UI线程中调用,建议自行测试;6、数据增加可能引起内存变化,需防内存溢出;7、其他。以上仅供参考,建议多搜索相关文档。
第2个回答  2017-05-25
SQLiteOpenHelper的onUpgrade方法里面更新数据库。
第3个回答  2017-09-07
重写onStart(),在里面加上getData()即可,也就是每次进入这个页面就刷新数据
第4个回答  2017-09-08
我不是你想象中的那样完美那样坚强,金钱和美女就足以把我征服!
相似回答