|
|
应用场景:保存大量的数据 对频繁的进行增删改查
特点:独立 跨平台 轻量型数据 支持大部分的Sql语句
保存路径:data/data/包名/database/xxx.db
创建表:
CREATE TABLE 表名 (id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20),phone VARCHAR(20))
对数据
增
INSERT INTO 表名 (name,phone) VALUES ('值1','值2')
删
DELETE FROM 表名 WHERE 条件语句
改
UPDATE 表名 SET 字段=值 WHERE 条件语句
查
SELECT * FROM 表名 WHERE 条件语句 GROUP BY 分组条件 ORDER BY 排序
升序 ASC
降序 DESC
创建数据库
实现步骤:
1.创建一个类继承SQLiteOpenHelper
2.重写oncreat()创建数据库时调用
//创建数据库时调用 ,如果数据库已经存在,就不会再次调用oncreat()
创建表格:
Student 表名 name:字段名
3.重写onUpgrade()版本更新时调用
4.
增加数据
方式一:
String str1 = "INSERT INTO Student (name,phone,age) VALUES ('老王','1111',35)";
mDB.execSQL(str1);
//方式二
String str1 = "INSERT INTO Student (name,phone,age) VALUES (?,?,?)";//占位符
mDB.execSQL(str1, new String[]{name,"1111","15"});//占位符的参数内容
删除数据:
修改数据:
查询数据:
//关闭游标
cursor.close();
问题:
游标没有下移 内存溢出 OOM
问题:
游标越界
ORM(对象映射)
添加数据
删除数据
//表名 删除条件 删除的具体内容
mDB.delete(Constants.TABLE_NAME, "name=?", new String[]{"小花"});
修改数据
ContentValues values=new ContentValues();
values.put(Constants.NAME, "小明");
values.put(Constants.AGE, 11);
values.put(Constants.PHONE, "1111111");
//表名 修改后的值 修改条件 条件的具体内容(占位符参数)
mDB.update(Constants.TABLE_NAME, values, "id=?", new String[]{"8"});
查询数据
获取游标方式不一样
//Cursor cursor = mDB.query(Constants.TABLE_NAME, 表名
columns,//列数
selection,//查询条件
selectionArgs//,条件的内容
groupBy, // 分组Id
having, //分组依据
orderBy)//排序
Cursor cursor = mDB.query(Constants.TABLE_NAME, null, null, null, null, null, "id DESC");
升序 ASC 默认
降序 DESC
|
|