本文讲一下关于SQLite的使用
一、首先我们需要掌握sql语句:
1、创建表
create table 表名(字段 字段数据类型,字段 字段数据类型...)
create table student(_id integer primary key autorincrement,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、sqlite数据库存储的位置:data/data/应用程序包名/databases/xx库文件
2、如果一次性向数据库中插入大量数据(比如插入1000条),应该怎样做才最好呢?
答:采用事务批量插入。
二、需要用到一个帮助类SQLiteOpenHelper
创建一个类继承SQLiteOpenHelper,来创建数据库或者打开数据库,重写以下三个方法。详见下:
(SQLiteDatabase db) { String sql = + Dbutils.+ + Dbutils.+ + Dbutils.+ db.execSQL(sql)Log.()} (SQLiteDatabase dboldVersionnewVersion) { (newVersion > oldVersion) { Log.()} } (SQLiteDatabase db) { .onOpen(db)Log.()}
三、通常定义一个数据库操作工具类,就叫DbManager吧。定义哪些方法,在下面的代码中都写了,注释详细。
MySqliteHelper (Context context) { (== ) { = MySqliteHelper(context)} } (SQLiteDatabase dbString sql) { (db != ) { (!.equals(sql) && sql != ) { db.execSQL(sql)} } } (SQLiteDatabase dbString tableString nullColumnHackContentValues values) { count = (db != ) { count = db.insert(tablenullColumnHackvalues)} count} (SQLiteDatabase dbString tableContentValues valuesString whereClauseString[] whereArgs) { count = (db != ) { count = db.update(tablevalueswhereClausewhereArgs)} count} (SQLiteDatabase dbString tableString whereClauseString[] whereArgs) { count = (db != ) { count = db.delete(tablewhereClausewhereArgs)} count} List<String> (SQLiteDatabase dbString sqlString[] selectionArgs) { Cursor cursor = (db != ) { cursor = db.rawQuery(sqlselectionArgs)} (cursor)} List<String> (Cursor cursor) { List<String> list = ArrayList<String>()(cursor.moveToNext()) { indexId = cursor.getColumnIndex(Dbutils.)id = cursor.getInt(indexId)String address = cursor.getString(cursor.getColumnIndex(Dbutils.))list.add(address)} list} List<String> (SQLiteDatabase dbString tableString[] columnsString selectionString[] selectionArgsString groupByString havingString orderBy) { Cursor cursor = (db != ) { cursor = db.query(tablecolumnsselectionselectionArgsgroupByhavingorderBy)} (cursor)} (SQLiteDatabase db) { (db != ) { db.close()} }
四、通常创建一个实体类Dbutils来存放诸如数据库名称、表名等信息的静态常量。
好了,到这里就差不多了。接下来就只要在组件如Activity中(或者Fragment也行)中创建数据库,打开数据库
MySqliteHelper helper = DbManger.getInstance(getActivity());
SQLiteDatabase db=helper.getWritableDatabase();//创建数据库,但数据库已经存在时,此条语句就是打开数据库
然后就是使用DbManager中的静态方法对数据库进行各种操作了。