永发信息网

怎样使用sqlite expert管理android手机sqlite数据库

答案:2  悬赏:0  手机版
解决时间 2021-02-18 04:12
怎样使用sqlite expert管理android手机sqlite数据库
最佳答案
在网上找了大把大把的资料、还是没能怎么弄清楚关于SQLite升级。固把一些网上找到的资料跟自己摸索出来的东西一起发出来。望有厉害的前辈能够指点一二。


先上网上一些高手的资料:blog/yaya_soft/article/details/17089353 、 /topic/1127838。


其中我所在的情况跟第三位前辈所遇到的情况一样, 先说Android SQLite吧, Android系统本身自带了一个建立SQLite的工具SQLiteOpenHelper、我们只要继承它,里面有几个重写的方法。


为了方便快捷、我只列出了onCreate方法跟onUpgrade方法。 onCreate方法是我们第一次创建数据库的时候会调用,onUpgrade()是我们数据库版本号不一样的时候会调用。网上很多资料都说如果要进行数据库升级,那就直接在onUpgrade里面写你所需要的进行的操作。比如:


至于里面代码具体的作用可以参照上面第一 第二个链接,里面有详细解释。
本人的情况是:本人使用外带的可视化工具直接把数据库跟表都已经建立好了,直接复制在raw目录下面。就没有通过系统自带的方法来建立数据库跟表。于是网上找资料一直不明白他们所谓的 在onUpgrade里面进行升级。 因为本人代码压根就没onUpgrade方法可以使用。 完了在网上找到各种资料、最终明白:无论你是用系统自带的SQLiteOpenHelper工具建立数据库跟表、还是使用外带工具。如果你要进行数据库升级。你所需要的操作都是一样的。只是系统自带的里面有onUpgrade()方法直接调用。而用外带工具的话你肯定也有一个自己写的SQLite操作类、只是使用自己写的操作类的话、onUpgrade()方法也是我们自己写。 反正里面要进行的操作都是一样的。
现在就看看如何进行数据库升级。


关于这块代码、如果你使用自己写的SQLite操作类,那你一看就明白。我们只需要得到db对象。就可以使用 db.execSQL("ALTER TABLE Subscription ADD COLUMN Activation BLOB"); 这个和SQLiteOpenHelper里面onUpgrade()方法里面的操作是一样的;同样是升级数据库的操作。
接下来就说说怎么判断数据库需要升级、这个就是涉及到版本匹配了、


再看这块代码、我们只要拿到db对象、就可以拿到db对应的版本、同时也可以更新db 的版本。完了我们可以参照上面链接中第三位前辈的方法、把我们最新的数据库版本定义在versionCode在AndroidManifest.xml文件中。 这样你最新数据库版本跟以前数据库版本都有了 、就可以判断更新不更新。这里解释下关于外带数据库的一些事情: 外带数据即我们通过sqlite expert professional可视化 工具建立一个sqlite.db文件、同时把文件放在raw目录下、我们每次进行数据库操作的时候就会先把raw目录下的sqlite.db复制到手机里面的路径下(如果手机路径里面存在sqlite.db就不复制)、完了以后每次取数据库都是从手机路径里面取的。如果我们raw目录下的sqlite.db进行了更新(我们自己把数据表改下、直接替换 ).同时我们的apk版本进行升级更新的时候覆盖安装apk。我们手机目录下的sqlite.db是不会更新的,还是旧版本。 但是我们raw目录下的sqlite.db是新版本。这个时候也不会再复制到手机。 这就需要我们把手机目录下的sqlite.db替换成raw目录下的。 写到这里我又想起一个事情:以前有位同事问为什么要把raw目录下的sqlite.db复制到手机、然后又操作手机路径下的sqlite.db 这不是多此一举吗。他说可以把sqlite.db放在assets目录下、不复制到手机路径。直接就是操作assets目录下的sqlite.db,这样每次数据库更新就直接替换assets目录下的sqlite.db。 我不知道放在assets目录下的好处、同时也不知道放在raw 然后复制到手机路径的好处。 这些我都不知道(望高人指点), 我只知道反正就是不能直接替换salite.db , 直接替换的话就是把旧版本的sqlite.db删除、再安装新版本的sqlite.db。
如果这样操作的话好像以前的数据都会丢失、就好像卸载重装一样。 无论何种方式我们要想保留数据都要进行数据的转移。关于数据转移前面给的链接中有。这里就不多讨论了。 发这篇文章只是自己搞这块的时候,一直被网上说的在onUpgrade()方法中直接更新搞糊涂了。 在这里记下来、免得下次不记得。
全部回答
1. 启动sqlite expert后,点击左上角新增数据库,然后在弹出的对话框中点击浏览 2. 指定数据库存放的路径,并且给数据库命名,后缀名建议设置为.db 3. 其他的保持默认设置,然后点 ok 4. 左侧显示了刚创建的数据库 5. 点击上方菜单的新增表按钮,然后在 table name那里输入表名,然后点击下方的add来添加表字段 6. 在弹出的对话框中设置字段名(name),字段类型(type),字段长度(size),是否可空(not null),然后点击ok 7. 依次类似添加其他字段,创建好字段后点击下方的apply 8. 点击上方的data,然后点击 + 来手动添加一行数据 9. 新增了一行 10. 双击新增的那行数据来进行编辑 11. 依次类似可以添加多条数据记录 12. 点击上方的 dll 可以看到表结构的 sql 语句脚本 13. 点击 design--index--add来添加主键索引,勾选primary,然后选择需要作为主键的字段,点击add,再点击ok 14. 依次类似可以添加其他的特性字段 15. 然后点击ok 16. 最后会显示设置index的列,然后点击下方的apply来确认设置
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
杭州上海有没有初中生上的艺术类学校
虚怀若谷的一个反义成语是什么
135-2x+y=57答案
已知椭圆X^2/9+Y^2=1,过左焦点F1作倾斜角为30
女,20,双下肢及颜面水肿,尿蛋白定量4.2g/
在一起七年的男友, 去外地工作三个月, 和三
【庞然大物的反义词】庞然大物的近义词反义词
同一个路由器下,笔记本比台式机网速快,请问
这个虫子叫什么!我家里住在半地下有好多这种
杨帆每学期的21次测验成绩全是4分或5分(老师
点球大战时能否用替补
西安的名胜古迹有哪些?
核显hd3000比8600GT哪个好?如果不考虑笔记本
沙市区实验小学四年级4班胡心怡成绩单
沃尔沃XC90车内锁 按下自动跳开 并且亮红色感
推荐资讯
表示友情无法逝去的时光的诗句
浦泸溪市的衰落
玉米、水稻和小麦的茎不能增粗的原因是茎里没
韩文 “今晚很棒,大家很开心,都早点休息吧
抚仙湖游风景作文大全
如何在游戏中封别人的号
请问从贵阳花果园购物中心打车到金阳客车站要
then的e发什音
火力少年王3冰魄好吗?为什么?
1210电阻5欧姆左右能承受900毫安电流吗
中国电信幸福路营业厅这个地址在什么地方,我
招商银行提升额度已经到期了,我该什么时候才
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?