上篇文章介绍了SQLite的建表方法,但是在项目中会遇到这样的问题。表结构不是一次就能定义得完整,随着项目的发展,需求的变更,数据库中的表项也可能随着增加或者发生改变。
如果从新定义表结构,对导致应用之前的数据库数据消失,而采用数据备份,再导入的方式有太过复杂。
经过一番查证,发现个可以通过SQLite中的onUpgrade()方法进行数据库的更新。而触发这个更新机制的关键就是数据库版本号!
通过更改版本号后调用数据库的open方法,系统会发现版本号的不同,从而调用onUpgrade()函数。那么再此回调函数中执行创建新表操作即可实习动态的新增表项。(同理,也可以新增或删除数据项)
原理很简单,这里就不贴代码了,直接上图:
其中getTableCreateSQLString()方法就是拼接建表SQL语句,具体方法实现可在上一篇文章中找到。
实际运用中若第一版app的数据库版本号是1,要想下个版本的app数据库中新增表项。必做的两个操作:
1,更改数据库版本号为大于1的版本;
2,在onUpgrade中写入建表语句。
然后编译新的app版本即可。
之前被这个问题困扰了很久,网上也不容易找到解决方案,直到看见了这个博客http://blog.csdn.net/long704480904/article/details/41325655 才发现然来只要跟新下数据库版本号就可以触发onUpgrade的执行。若要动态修改表属性可参考该文章。
Android SQLite 动态新增表
最新推荐文章于 2024-01-21 10:22:35 发布