感冒了,可太难受了,感觉像是行尸走肉。这两天应该全国都在变冷吧,大家一定要注意身体啊。少熬夜了,我感觉我就是熬夜导致免疫力下降了。
今天就说点简单的咯,说下Android端用的数据库引擎——SQLite。
SQL
数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。就像其他数据库,SQLite
引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite
直接访问其存储文件。Android
系统架构中的系统运行库层的c/c++
程序库部分。SQLite有如下特性,也就决定了其在移动端的地位:
SQLite
不需要配置,这意味着不需要安装或管理。SQLite
是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。SQLite
是自给自足的,这意味着不需要任何外部的依赖。SQLite
事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。SQLite
支持 SQL92(SQL2)标准的大多数查询语言的功能。SQLite
使用 ANSI-C 编写的,并提供了简单和易于使用的 API。SQLite
可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。先说说SQLite的语法,分为创建,增,删,查,改
。
1)创建语法:
CREATE TABLE main.表名(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
account TEXT,
pwd TEXT,
age INT
);
AUTOINCREMENT代表自增主键。
2)在Android中的用法:
public class MySQLite extends SQLiteOpenHelper {
public static String DB_NAME="main.db";
public MySQLite(Context context, int version) {
super(context, DB_NAME, null, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
//数据库第一次创建时被调用
db.execSQL("create table 表名 (_id integer primary key autoincrement)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//数据库版本变化时调用
}
}
1)基本语法
INSERT INTO USER (name,pwd) VALUES ("jimu", "123456");
2)Android中用法
ContentValues values = new ContentValues();
values.put("name","jimu")
values.put("pwd","123456")
sqlhelper.getWritableDatabase().insert(表名, null, values);
1)基本语法
//删除数据
DELETE FROM USER WHERE name = "jimu";
//删除数据库
DROP TABLE 数据库名.表名;
2)Android中用法:
//删除数据
getWritableDatabase().delete(表名, "name=?", new String[]{"jimu"});
//删除数据库
getWritableDatabase().execSQL("DROP TABLE IF EXISTS "+ TABLE_NAME);
1)基本语法
SELECT * 或者 具体的字段
FROM 表名
[ WHERE <条件> ]
[ GROUP BY 列名 ]
[ HAVING <条件> ]
[ ORDER BY 列名 <DESC> | <ASC> ]
[ LIMIT 行数 OFFSET 偏移量]
2)Android中用法
getWritableDatabase().query(TABLE_NAME_PERSON,null,"name=?",new String[]{"jimu"},null,null,null);
1)基本语法
UPDATE USER SET name = "jimu2" WHERE id = 1;
2)Android中用法:
getWritableDatabase().update(String table,ContentValues values, String whereClause, String[] whereArgs)
主要有以下几款:
网上也有很多对于各个框架的比较,这里就不细说了。我觉得都可以用,没有很明显的优缺点。如果你的项目框架是MVVM
架构的话,就直接用room
吧,毕竟是jetpack
组件,对Livedata,paging等有比较好的支持。
https://juejin.cn/post/6891411303798308872
最后祝我早日康复,然后给大家带来更多优质的文章吧。晚安。