第一次接触SQLite,真是一场不友好的相遇,就搁浅在那了,能不用就不用了。之后后面的小demo以及组团项目都需要用到,唉,还是得沉下心学习啊。
今天就学到的一点,做一个小回顾,让以后再遇到方便迅速回忆,不再慢慢找啦。
首先关于SQLite的概念。
详细的暂且不说,官方说的很清楚,这里就我个人感觉讲,就是小型的数据库,置放在项目内部,一种简单,快捷(相对大型数据库)的数据库。
本篇大致分几个说点。
1.基本结构 2.数据操作方式 3.数据文件查看以及工具
一,基本机构
1.一个数据库支持类,需继承SQLiteOpenHelper,写完会要求继承两个方法,
onCreate()
onUpgrade()
/** * 创建数据库或开启数据库 * * @param sqLiteDatabase 数据库名 */ @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { Log.i("tag","----onCreate----"); String sql = "create table "+SQLbase.TABLE_NAME+"("+SQLbase.ID+" integer primary key autoincrement,"+ SQLbase.NAME+" varchar(20),"+SQLbase.NUM+" varchar(20))"; sqLiteDatabase.execSQL(sql);//执行数据库语句 };
我们在onCreate()新建表,如果需建多张表,则与此类似即可。在这里我们可以打上log看它的运行过程。
/** * * @param sqLiteDatabase 数据库表名 * @param i 旧版本 * @param i1 新版本 */ @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { Log.i("tag","----onUpgrade----"); }
因为SQLite的更新是覆盖式的,用int类型记录版本号(只会大不会变小)
public void onOpen(SQLiteDatabase db) { super.onOpen(db); Log.i("tag","----onOpen----"); }
写一个onOpen方法,对比下onCreate()
public static SQLHelper sqlHelper(Context context){ if (helper==null){ helper = new SQLHelper(context); } return helper; }
在操作类里写一个非空判断。
05-10 11:40:21.454 15615-15615/com.example.sqlitedemo I/tag: ----onCreate---- 05-10 11:40:21.632 15615-15615/com.example.sqlitedemo I/tag: ----onOpen----
由于我们第一次是创建,所以会先经过onCreate这个方法,后面再打开时,则是直接onOpen()方法。
这里有人会问,这是为什么,为什么第一次经过onCreate() 后面都是onOpen()了?
其实是因为
helper.getWritableDatabase()
,首次创建,之后是打开。这就解释了上面要做非空判断的原因,因为我们我们是在onCreate()里创建的表,因此才有如上的日志输出。
二、简单的支持类说完了,下面的说说操作类(工具类),这里我们一般写增删改查的方法,也可以封装一些方法和类在这里。
就说增删改查吧。
目前已知的有原生版的、google的api版,至于选择哪种,看个人,一般个人数据库语句还自信的,可以选择sql语句,因为熟练,代码量会少些许。
不熟悉的比如我,就选择了google封装的api类,ContentValues类,沉下心看,也是操作简单,其他基本一致,在查询那一块需要用到cursor。
参数怎么填怎么用,不用担心,鼠标移动下全有了(基于android studio开发环境)
当然了原生的也不是不可以,还是那句话,个人喜好问题。
sql语句很多,这里就不列举了,附上之前我看到文章关于google api类和原生类版。
http://www.jianshu.com/p/b5ff80941fab
三、查看数据库文件以及工具
按照蓝条顺序来,找到我们要打开的工具。
操作顺序就是data >data >项目名 > databases > 表名.db
找到了,那我们怎么知道里面写的数据是否如所想的,工具有很多,我这里使用的是
操作简单,无脑,把数据库文件直接导出来,将其拖到内部即可。顺便补充导出。
最左导出 右边导入 再右边删除。
最后再放上一张查看图。
至于具体使用,大伙自行摸索吧 说太多显啰嗦哈哈。
结语,安卓萌新一枚,起步懵懂,各种探索。有什么概念不足不到位的地方,还请大神指出留言。谢谢!