Penyimpanan database yang disediakan oleh mPaaS memungkinkan pengguna untuk mengenkripsi lapisan bawah database berdasarkan arsitektur OrmLite. Anda dapat menggunakan antarmuka berikut untuk menambah, menghapus, memodifikasi, dan mengkueri data dalam database.
Baseline 10.2.3 dan yang lebih baru:
com.alibaba.j256.ormlite.dao.DaoBaseline 10.1.68 dan yang lebih lama:
com.j256.ormlite.dao.Dao
Saat menggunakan database, hindari mengenkripsi database asli secara langsung karena dapat menyebabkan kegagalan dekripsi pada lapisan native. Sebaiknya buat database terenkripsi baru terlebih dahulu, lalu salin isi dari database asli ke database terenkripsi tersebut.
Contoh
Membuat tabel
// Nama tabel database, secara default adalah nama kelas
@DatabaseTable
public class User {
// Kunci utama
@DatabaseField(generatedId = true)
public int id;
// Nilai kolom nama harus unik
@DatabaseField(unique = true)
public String name;
@DatabaseField
public int color;
@DatabaseField
public long timestamp;
}Membuat OrmLiteSqliteOpenHelper
Kustomisasi DemoOrmLiteSqliteOpenHelper yang mewarisi dari OrmLiteSqliteOpenHelper.
Dengan OrmLiteSqliteOpenHelper, Anda dapat membuat dan mengenkripsi database.
Baseline 10.2.3 dan yang lebih baru:
public class DemoOrmLiteSqliteOpenHelper extends OrmLiteSqliteOpenHelper {
/**
* Nama database
*/
private static final String DB_NAME = "com_mpaas_demo_storage.db";
/**
* Versi database saat ini
*/
private static final int DB_VERSION = 1;
/**
* Kunci enkripsi database. mPaaS mendukung enkripsi database untuk membuat data lebih aman di perangkat. Jika nilainya null, database tidak akan dienkripsi.
* Catatan: Kata sandi hanya dapat diatur sekali, dan tidak ada API untuk mengubah kata sandi; pengaturan kata sandi untuk library yang belum dienkripsi tidak didukung (akan menyebabkan crash).
*/
private static final String DB_PASSWORD = "mpaas";
public DemoOrmLiteSqliteOpenHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
setPassword(DB_PASSWORD);
}
/**
* Fungsi callback saat pembuatan database
*
* @param sqLiteDatabase: Database
* @param connectionSource: Koneksi
*/
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {
try {
// Membuat tabel User
TableUtils.createTableIfNotExists(connectionSource, User.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* Fungsi callback saat pembaruan database
*
* @param database: Database
* @param connectionSource: Koneksi
* @param oldVersion: Versi database lama
* @param newVersion: Versi database baru
*/
@Override
public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {
try {
// Menghapus versi lama tabel User, abaikan kesalahan
TableUtils.dropTable(connectionSource, User.class, true);
} catch (SQLException e) {
e.printStackTrace();
}
try {
// Membuat ulang tabel User
TableUtils.createTableIfNotExists(connectionSource, User.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
}Baseline 10.1.68 dan yang lebih lama:
Kunci enkripsi database. mPaaS mendukung enkripsi database untuk membuat data lebih aman di perangkat. Jika nilainya null, database tidak akan dienkripsi. Kunci enkripsi database. mPaaS mendukung enkripsi database untuk membuat data lebih aman di perangkat. Jika nilainya null, database tidak akan dienkripsi.public class DemoOrmLiteSqliteOpenHelper extends OrmLiteSqliteOpenHelper {
/**
* Nama database
*/
private static final String DB_NAME = "com_mpaas_demo_storage.db";
/**
* Versi database saat ini
*/
private static final int DB_VERSION = 1;
/**
* Kunci enkripsi database. mPaaS mendukung enkripsi database untuk membuat data lebih aman di perangkat. Jika nilainya null, database tidak akan dienkripsi.
* Catatan: Kata sandi hanya dapat diatur sekali, dan tidak ada API untuk mengubah kata sandi; pengaturan kata sandi untuk library yang belum dienkripsi tidak didukung (akan menyebabkan crash).
*/
private static final String DB_PASSWORD = "mpaas";
public DemoOrmLiteSqliteOpenHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
setPassword(DB_PASSWORD);
}
/**
* Fungsi callback saat pembuatan database
*
* @param sqLiteDatabase Database
* @param connectionSource Koneksi
*/
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {
try {
// Membuat tabel User
TableUtils.createTableIfNotExists(connectionSource, User.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* Fungsi callback saat pembaruan database
*
* @param database Database
* @param connectionSource Koneksi
* @param oldVersion Versi database lama
* @param newVersion Versi database baru
*/
@Override
public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {
try {
// Menghapus versi lama tabel User, abaikan kesalahan
TableUtils.dropTable(connectionSource, User.class, true);
} catch (SQLException e) {
e.printStackTrace();
}
try {
// Membuat ulang tabel User
TableUtils.createTableIfNotExists(connectionSource, User.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
}Mengkueri data
Asumsikan Anda ingin mengkueri semua data di tabel User dan mengurutkannya berdasarkan kolom timestamp secara menaik.
/**
* Inisialisasi data database
*/
private void initData() {
mData.clear();
try {
mData.addAll(mDbHelper.getDao(User.class).queryBuilder().orderBy("timestamp", true).query());
} catch (SQLException e) {
e.printStackTrace();
}
}Menyisipkan data
/**
* Menyisipkan informasi pengguna
*
* @param user: Informasi pengguna
*/
private void insertUser(User user) {
if (null == user) {
return;
}
try {
// Menyisipkan data, mDbHelper adalah DemoOrmLiteSqliteOpenHelper yang telah Anda kustomisasi
mDbHelper.getDao(User.class).create(user);
} catch (SQLException e) {
e.printStackTrace();
}
}Menghapus data
/**
* Menghapus informasi pengguna
*
* @param user: Informasi pengguna
*/
private void deleteUser(User user) {
try {
// Menghapus data, mDbHelper adalah DemoOrmLiteSqliteOpenHelper yang telah Anda kustomisasi
mDbHelper.getDao(User.class).delete(user);
} catch (SQLException e) {
e.printStackTrace();
}
}