1.前言
刚开始学安卓开发的在课堂及书本上了解过sqlite,但嫌sqlite太老太繁琐后来在公司中一直使用的是realm
。无奈公司有的老项目是用的sqlite,因此再抽空学习一下。html
2.介绍
介绍没啥好说的,简单来讲就是一个本地的轻量级关系型数据库,最后是以文件的形式存储在本地的。java
3. 使用
了解下来,sqlite的使用也很简单,主要是要会sql语句。android
3.1 建库、建表
android sdk 提供了一个抽象类SQLiteOpenHelper来帮助咱们使用sqlite,咱们只须要继承它,实现抽象方法就可使用sqlite啦。git
解释:
github
3.2 DML - 数据库操做语言
3.2.1 增长
public void insertUser(User user) {
// ContentValues contentValues = new ContentValues();
// contentValues.put("name", user.getName());
// contentValues.put("age", user.getAge());
// db.insert(TB_NAME, null, contentValues);
//使用sql语句增长
String version2Sql = String.format("insert into user (age,name,sex) values (%d,'%s',%d)",user.getAge(),user.getName(),1);
db.execSQL(version2Sql);
}
复制代码
解释:
web
3.2.2 删除
public void delByName(String name) {
// db.delete(TB_NAME, "name = ?", new String[]{name});
//使用sql语句删除
String sql = String.format("delete from user where name='%s'",name);
db.execSQL(sql);
}
复制代码
解释:
sql
?
的具体值。 注意中间的条件语句的编写规则就是去掉正常sql语句中where。3.2.3 更改
public void updateByName(User user, String name) {
// ContentValues contentValues = new ContentValues();
// contentValues.put("name", user.getName());
// contentValues.put("age", user.getAge());
// db.update(TB_NAME, contentValues, "name = ?", new String[]{name});
//使用sql语句更改
String sql = String.format("update user set age=%d , name='%s' where name='%s'",user.getAge(),user.getName(),name);
db.execSQL(sql);
}
复制代码
解释:
数据库
?
的具体值。3.3 查询
public List<User> queryByName(String name) {
// Cursor cursor = db.query(TB_NAME, null, "name = ?", new String[]{name}, null, null, null);
//使用sql语句查询
Cursor cursor=db.rawQuery("select * from user where name = ? ",new String[]{name});
List<User> orderList = new ArrayList<User>(cursor.getCount());
if (cursor.getCount() > 0) {
while (cursor.moveToNext()) {
String newName = cursor.getString(cursor.getColumnIndex("name"));
Integer newAge = cursor.getInt(cursor.getColumnIndex("age"));
User order = new User(newName, newAge);
orderList.add(order);
}
}
cursor.close();
return orderList;
}
复制代码
解释:
数组
?
表明的实际值的数组。参数 | 意思 |
---|---|
table | 要操做的表 |
columns | 查询的列全部名称集 |
selection | WHERE以后的条件语句,可使用占位符 |
groupBy | 指定分组的列名 |
having | 指定分组条件,配合groupBy使用 |
orderBy | 指定排序的列名 |
limit | 指定分页参数 |
distinct | 能够指定“true”或“false”表示要不要过滤重复值 |
4.总结
5. 完整demo地址
6. 参考文章
6. 历史文章目录