关于Sqlite的介绍和使用:
一、介绍:
1、Sqlite数据库是Android内置的轻量级的数据库
2、Sqlite数据库是关系型数据库,没有用户概念,可以理解成一个可操作的文件
3、Sqlite数据库占空间小,操作简单
二、对Sqlite数据库的增、删、改、查操作:
有两种方式:api和自己写sql语句。对于api方式,这里不讲了,可以自己查看api。
使用api,也可以方便地满足一些需求。比如我们使用sqlitedatabase的replace方法,来满足这种需求---插入时,如果没有这条记录,则插入,如果有这条记录,则更新;更新时,如果有这条记录,则更新,如果没有这条记录,则插入。
当前前提是,对应的数据表必须是有主键(PRIMARY KEY)或者唯一属性(UNIQUE)。
使用sql语句:
1、创建表
create table 表名(字段 字段数据类型,字段 字段数据类型...)
create table student(_id integer primary key autoincrement,name varchar(10),age integer)
2、删除表
drop table 表名
drop table student
3、插入数据(经常使用)
insert into 表名[(字段,字段...)] values(字段值,字段值....)
insert into student(_id,name) values(1,'zs')
insert into student values(2,'ls',20)
注意:
-
如果插入数据时未指定插入的字段 这时values后的数据值应该从表的第一个字段开始按照具体的类型依次插入
-
插入数据时要按照条进行插入 不能插入部分数据
3. 如果存在自动增长的列需要明确指定插入的字段
4、删除数据
delete from 表名 where xx
delete from student where _id=1
5、修改数据
update 表名 set 字段=字段的新值,字段=字段的新值 where xxx
update student set name='we' where _id=1
6、查询数据(经常使用)
select 字段名 from 表名 where xxx group by 分组字段 having 筛选 order by 排序字段 desc(asc)
select 字段名 from 表名 where xxx order by 排序字段 desc(asc)
select * from student where _id=2
select * from student where _id<>2 <>不等于
select * from student where _id>2 and name='we' and 同时符合两个条件
select * from student where _id>2 or name='we' or 符合其中一个条件
select * from student where name like '_a' _ 表示单个字符 %表示任意多个字符
select * from student where name like '%a%'
select * from student where name like 'a%'
select * from student where name is null 判断某个字段的值是否是null
select _id as id,name as 姓名,age as 年龄 from student
select * from student where _id between 1 and 3 1-3之间
select * from student where _id in(1,3) in(在括号范围内) id 1或者3
select * from student limit 0,5 0表示起始的行数 5表示每页5条
7、聚合函数 sum() avg() max() min() count()
select sum(age) from student
select count(*) from student
select max(age) from student
三、数据库事务
1、保证数据的一致性
2、提高效率
3、当进行批量操作时(比如批量添加、批量删除)使用事务,提高效率
4、默认执行sql语句的操作,底层都会开启事务进行操作。如果数据条目较大,不断地开启事务、提交事务会造成效率下降,所以应该显示地声明事务
如下:
SQLiteDatabase db=helper.getWritableDatabase();
//1.显式打开数据库事务
db.beginTransaction();
for(int i=1;i<=300;i++){
String sql="insert into "+Dbutils.TABLE_NAME+" values("+i+",'zhangsan"+i+"',30)";
DbManger.execDataSql(db, sql);
}
//2.表示事务提交成功
db.setTransactionSuccessful();
//3.结束事务
db.endTransaction();
DbManger.closedDb(db);
四、数据库文件的存储位置:
data/data/应用程序包名/databases/xx.db