数据库作为Android客户端一种数据存储方式,一直想好好学习下。刚好最近做了一个项目,为了提高响应性能将后端的部分逻辑放在了前端,那么后端对数据库的操作必然要在前端实现。前端可以选择在内存中用for循环,也可以用SQLite,两种方式各有利弊。用for循环直接在内存中操作,不用读写数据库,不用建表,但是所有的修改查询操作都要自己实现,数据量大的话可能会非常复杂,而且不利于扩展;用数据库前期需要比较多的准备工作,像建数据库,建表,写入数据等,但是后期可以借助SQL语言非常方便地实现各种增,删,改,查操作,避免了直接操作数据,利于扩展。可能有的同学会疑虑频繁操作数据库会不会有性能问题,我可以很负责地告诉大家用户基本是无感知的,速度和内存不相上下,几乎没有出现数据库操作异常。注:表结构变更后一定要升级数据库版本,不然不会生效。
接下来主要讲Android客户端SQLite的一些操作经验,SQLite 是一个轻量级的软件库,无需任何配置,可以直接调用。可以在Android中引入第三方库,避免直接写SQL语句,该库会封装常用的SQL操作,具体详情可以参考https://www.jianshu.com/p/8e3f294e2828,可以满足我们基本的增,删,改,查操作,如果不能满足,还可以直接调用execSQL函数执行SQL语句。如果想要系统地学习SQL语句,可以参考https://www.runoob.com/sqlite/sqlite-drop-table.html,里面包含了SQLite 数据库的基本简介和操作方法,学完会对SQLite 数据库有一个更加全面清晰的认识,因为SQLite 可以直接运行在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT),建议大家在电脑的终端手敲一遍,印象会更加深刻。
我在学习的过程中发现以下两个命令是等价的,特此分享出来,如果大家在学习的过程中有什么不懂的地方欢迎回帖交流。
COMPANY :
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Angle 34 Home 34884.0
2 Anffle 34 Home 34884.0
3 Anffle 34 Home 44884.0
4 Booble 54 Home 56644.0
5 Wffble 54 Home 56644.0
DEPARTMENT :
ID DEPT EMP_ID
---------- ---------- ----------
1 Nahdhhd 4
2 Nahdhhd 6
3 Anffle 6
4 Bkdkd 9
SELECT A.NAME, A.AGE, A.ADDRESS, B.DEPT, B.EMP_ID AS DEPARTMENT_EMP_ID FROM COMPANY AS A, DEPARTMENT AS B WHERE A.ID = B.ID;
等价于
SELECT A.NAME, A.AGE, A.ADDRESS, B.DEPT, B.EMP_ID AS DEPARTMENT_EMP_ID FROM COMPANY AS A JOIN DEPARTMENT AS B ON A.ID = B.ID;
操作结果:
NAME AGE ADDRESS DEPT DEPARTMENT_EMP_ID
---------- ---------- ---------- ---------- -----------------
Angle 34 Home Nahdhhd 4
Anffle 34 Home Nahdhhd 6
Anffle 34 Home Anffle 6
Booble 54 Home Bkdkd 9