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. 歷史文章目錄