今天写sqlite更新,发现无论升级版本号还是卸载app重装,onUpgrade都不调用,甚至连onCreate都不调用。后来发现是我的写法有问题。
我建了一个基类来放数据库名和版本号,然后子类各自连接数据库

class BaseDao{
	static final String dbName = "test_db";
	static final int version = 1;
}

class TestDao extends BaseDao{
	class TestHelper extends SQLiteOpenHelper{

		TestHelper(){
			super(context, dbName, null, version);
			create table if not exists...
		}

		onCreate(){

		}

		onUpgrade(){

		}
	}
}

class TestDao2 extends BaseDao{
	class TestHelper2 extends SQLiteOpenHelper{

		TestHelper2(){
			super(context, dbName, null, version);
			create table if not exists...
		}

		onCreate(){

		}

		onUpgrade(){

		}
	}
}

一个helper对应一个数据库,假如以前调用过别的helper建立,更新了数据库,那其他地方的helper的onCreate和onUpgrade就不会调用了。

记一下犯的这个弱智问题

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐