更新时间:2021-01-05 19:11
mPaaS 提供的数据库存储基于 OrmLite
架构,提供了数据库底层加密能力。数据库的增、删、改、查可以使用 com.j256.ormlite.dao.Dao
的接口来调用。
// 数据库表名,默认为类名
@DatabaseTable
public class User {
// 主键
@DatabaseField(generatedId = true)
public int id;
// name字段唯一
@DatabaseField(unique = true)
public String name;
@DatabaseField
public int color;
@DatabaseField
public long timestamp;
}
自定义一个 DemoOrmLiteSqliteOpenHelper
继承自 OrmLiteSqliteOpenHelper
。通过OrmLiteSqliteOpenHelper
,可以创建数据库并对数据库加密。
public class DemoOrmLiteSqliteOpenHelper extends OrmLiteSqliteOpenHelper {
/**
* 数据库名称
*/
private static final String DB_NAME = "com_mpaas_demo_storage.db";
/**
* 当前数据库版本
*/
private static final int DB_VERSION = 1;
/**
* 数据库加密密钥,mPaaS 支持数据库加密,使数据在设备上更安全,若为 null 则不加密。
* 注意:密码只能设置一次,不提供修改密码的 API;不支持对未加密的库设置密码进行加密(会导致闪退)。
*/
private static final String DB_PASSWORD = "mpaas";
public DemoOrmLiteSqliteOpenHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
setPassword(DB_PASSWORD);
}
/**
* 数据库创建时的回调函数
*
* @param sqLiteDatabase 数据库
* @param connectionSource 连接
*/
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {
try {
// 创建User表
TableUtils.createTableIfNotExists(connectionSource, User.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 数据库更新时的回调函数
*
* @param database 数据库
* @param connectionSource 连接
* @param oldVersion 旧数据库版本
* @param newVersion 新数据库版本
*/
@Override
public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {
try {
// 删除旧版User表,忽略错误
TableUtils.dropTable(connectionSource, User.class, true);
} catch (SQLException e) {
e.printStackTrace();
}
try {
// 从新创建User表
TableUtils.createTableIfNotExists(connectionSource, User.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
这里是查询User
表的全部数据并按照timestamp
字段进行升序排列。
/**
* 初始化DB数据
*/
private void initData() {
mData.clear();
try {
mData.addAll(mDbHelper.getDao(User.class).queryBuilder().orderBy("timestamp", true).query());
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 插入用户信息
*
* @param user 用户信息
*/
private void insertUser(User user) {
if (null == user) {
return;
}
try {
// mDbHelper = new DemoOrmLiteSqliteOpenHelper(this); 更多信息,请参见上文 创建 OrmLiteSqliteOpenHelper
mDbHelper.getDao(User.class).create(user);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 删除用户信息
*
* @param user 用户信息
*/
private void deleteUser(User user) {
try {
// mDbHelper = new DemoOrmLiteSqliteOpenHelper(this); 更多信息,请参见上文 创建 OrmLiteSqliteOpenHelper
mDbHelper.getDao(User.class).delete(user);
} catch (SQLException e) {
e.printStackTrace();
}
}
在文档使用中是否遇到以下问题
更多建议
匿名提交