一、SQLiteDatabase概念
用于管理和操作SQLite数据库,几乎所有的数据库操作,最终都将由这个类完成
getReadableDatabase()
返回的就是SQLiteDatabase
SQLiteDatabase db=helper.getReadableDatabase();
获取该类的对象
有下列三种可能情况:
1、数据库存在,则直接打开数据库
2、数据库不存在,则调用数据库创建方法,再打开数据库
3、数据库存在,但版本号升高了,则调用数据库升级方法
二、SQLiteDatabase对象的操作
1、rawQuery()
查询 对应于 select * from 表名
这样的操作
返回值是Cursor
对于Cursor的解释可以参考资料:
2、execSQL()
添加、删除、修改、创建表 (execte 执行SQL语句)
无返回值
三、四个方法
1、insert
构造函数:
publiclong insert (String table, String nullColumnHack, ContentValues values)
返回值类型是long,代表的是刚刚添加的那条数据的id
参数解释:
参数1:table,你所要操作的数据库表的名称
参数2:nullColumnHack,可以为空的列
参数3:values,如果第三个参数是null或者说里面没有数据,那么我们的sql语句就会变为insert into info_tb () values () ,在语法上就是错误的此时通过参数3指定一个可以为空的列,语句就变成了insert into info_tb(可空列) values(null)
示例:
private SQLiteDatabase db;
ContentValues values = new ContentValues();
//insert into 表名(列1,列2) values(值1,值2)
//values(值1,值2)这一部分交给ContentValues操作
values.put("name",nameStr);
values.put("age",ageStr);
values.put("gender",genderStr);
db.insert("test_tab",null,values);
2、query查询
参考资料:SQLiteDatabase.query()各个参数的意义
构造函数:
public Cursor query (String table, String[] columns, String selection, String[] selectionArgs,String groupBy, String having,String orderBy,String limit)
返回值类型是Cursor
参数解释:
select 列名 from 表名 where 列1=值1 and 列2=值2
参数1:table,表名
参数2:colums,你所要查询的列名 {“name”,“age”,“gender”}
如果想要查询所有的话,传入null或{*}
参数3:selection,知道where的约束条件(针对列)(不要条件的话传入null)
参数4:slectionArgs,为where中的占位符提供具体的值
参数5:groupBy,相当于SQL语句中的==“group by”==关键字,分组
参数6:having,当 group by对数据进行分组后,可以通过having来去除不符合条件的组
参数7:行的排列方式,相当于SQL语句中的==“order by”==关键字,传递null表示使用默认的排序方式,可能是无序排列
聚合函数:用于统计的函数
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200225143326992.png
1、count(列名):统计总数
①统计表中的记录数
②通过group by分别统计各个年龄阶段的人数
③通过having来去除不符合条件的组
④通过order by进行排序,默认升序,desc降序