日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

數據庫存儲

mPaaS 提供的數據庫存儲基于 OrmLite 架構,提供了數據庫底層加密能力。數據庫的增、刪、改、查可以使用以下接口來調用:

  • 10.2.3 及以上基線:com.alibaba.j256.ormlite.dao.Dao

  • 10.1.68 及以下基線:com.j256.ormlite.dao.Dao

說明

在使用數據庫時,請不要對原有數據庫直接進行加密,否則會引發 native 層解密崩潰。建議您先創建新的加密數據庫,再將原有數據庫內容拷貝至新建的加密數據庫中。

使用示例

生成數據表

// 數據庫表名,默認為類名
@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;
}

創建 OrmLiteSqliteOpenHelper

自定義一個 DemoOrmLiteSqliteOpenHelper 繼承自 OrmLiteSqliteOpenHelper。通過OrmLiteSqliteOpenHelper,可以創建數據庫并對數據庫加密。

  • 10.2.3 及以上基線:

    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(MPSQLiteDatabase 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(MPSQLiteDatabase 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();
            }
        }
    }
  • 10.1.68 及以下基線:

    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();
        }
    }