SQLite本身就是一个独立的第三方库,包含2T的容量,有自己的语法,Android集成了SQlite数据库。
SQLite中的数据类型 有五种储存类型
NULL 空
INTEGER 整型
REAL 浮点型
TEXT 文本
BLOB 普通数据
Android中获取数据库对象:
SQLiteDatebase db= myOpenHelper.getWriteableDatebase();
//如果磁盘内存未满着调用getWritableDatabase(),如果磁盘内存满了,就用只读模式开启数据库 SQLiteDatabase
db = mySQLite.getReadableDatabase();
SQLite数据库主要包含了:增、删、改、查, 四个方面
在Android中主要有两种方式来实现SQLite数据库的,增、删、改、查
提供一个帮助类SQLiteOpenHelper,用自己实现类继承即可
第一种———是使用SQLite语句来实现:
分别调用:
db.execSQL (SQLite语句,?数据集合)
db.rawQuery(SQLite语句,?数据集合)
所以SQLite可以解析大部分标准SQL语句,如:
查询语句: select * from 表名 where 条件子句 group by 分组字句 having ...order by 排序子句
如:select * from person
select * from person order by id desc
selsct name from person group bu name having count(*)>1
分页SQL与mysql类型,下面SQL语句获取5条记录,跳转前面3条记录
select * from Account limit 5offset 3 或者 select * from Account limit 3,5
插入语句:insert into 表名 (字段列表) values (值列表)。如: insert into person (name,age) values ('快发' , 3)
更新语句:update 表名 set 字段名=值 where 条件子句。如:update person ser name='快发' where id = 10
删除语句:delete from 表名 where 条件子句。如:delete from person where id= 10
获取添加记录后自增长的ID值: SELECT last_insert_rowid( )
第二种——是使用Android提供的API实现:
insert() 它接收三个参数,第一个参数是表名,我们希望向哪张表里添加数据,这里就传入该表的名字。
第二个参数用于在未指定添加数据的情况下给某些可为空的列自动赋值 NULL,一般我们用不到这个功能,
直接传入 null 即可。第三个参数是一个 ContentValues 对象,它提供了一系列的 put()方法重载,用于向
ContentValues 中添加数据,只需要将表中的每个列名以及相应的待添加数据传入即可.
update() 这个方法接收四个参数,第一个参数和 insert()方法一样,也是表名,在这里指定去更新哪张表里的数据。第二个参数是
ContentValues 对象,要把更新数据在这里组装进去。第三、第四个参数用于去约束更新某一行或某几行中的数据,不指定的话默认就是更新所有行。
delete() 这个方法接收三个参数,第一个参数仍然是表名,这个已经没什么好说的了,第二、第三个参数又是用于去约束删除某一
行或某几行的数据,不指定的话默认就是删除所有行。
query() 第一个参数不用说,当然还是表名,表示我们希望从哪张表中查询数据。
第二个参数用于指定去查询哪几列,如果不指定则默认查询所有列。
第三、第四个参数用于去约束查询某一行或某几行的数据,不指定则默认是查询所有行的数据。
第五个参数用于指定需要去 group by 的列,不指定则表示不对查询结果进行 group by 操作。
第六个参数用于对 group by 之后的数据进行进一步的过滤,不指定则表示不进行过滤。
第七个参数用于指定查询结果的排序方式,不指定则表示使用默认的排序方式。
这里写图片描述
帮助类MySQLite代码:
package com.example.administrator.foundationdemo.sqlite.service;
import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* Created by Administrator on 2016/12/12.
*/
public class MySQLite extends SQLiteOpenHelper{
public MySQLite (Context context,String name){//保存路径 /datebases/
this(context,name,null,2);
}
public MySQLite(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
public MySQLite(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) {
super(context, name, factory, version, errorHandler);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {//数据库第一次被创建时调用
//创建表 表名称 自增长ID名
sqLiteDatabase.execSQL("CREATE TABLE person