Untuk menggunakan database paket (yaitu yang disertakan sebagai aset) untuk penggunaan penuh, database harus dibuka ritsletingnya (otomatis) dan disalin ke lokasi yang sesuai (paling sering data/data/<package_name>/databases/<database_name>
di mana <package_name>
dan <database_name>
akan sesuai dengan nama paket Aplikasi dan nama database masing-masing).
Untuk "mengemas" database harus disertakan dalam folder aset dan lebih disukai ke folder database (diperlukan jika menggunakan SQLiteAssetHelper tanpa modifikasi ).
Selain itu, penyalinan harus dilakukan sebelum benar-benar membuka database setelah itu dapat dibuka.
Memanfaatkan SQLiteAssetHelper
-
Langkah pertama adalah membuat database untuk dikemas, ini tidak akan dibahas, karena ada banyak alat yang tersedia. Untuk contoh ini database adalah file bernama test.db
-
Anda kemudian harus membuat proyek Anda dalam hal ini Proyek telah disebut DBtest dengan Domian Perusahaan sebagai com.DBtest jadi nama paketnya adalah dbtest.com.dbtest .
-
Tahap selanjutnya copy database ke folder assets.
- Membuat aset folder di src/main folder, jika belum ada.
- Membuat folder databases"" di **assets folder, jika belum ada.
-
Menyalin file database (test.db dalam contoh ini) ke dalam folder database.
-
Tahap selanjutnya adalah menyiapkan proyek untuk menggunakan SQLiteAssetHelper dengan memasukkannya ke dalam build.gradle Aplikasi .
- Edit build.gradle di Aplikasi map.
- Tambahkan baris
implementation 'com.readystatesoftware.sqliteasset:sqliteassethelper:2.0.1'
dalam bagian dependensi. - Klik Sinkronkan Sekarang
-
Buat kelas yang merupakan subkelas dari kelas SQLiteAssethelper yang baru/sekarang tersedia. Untuk latihan ini akan disebut DBHelper .
- Klik Kanan MainActivity kelas java, pilih Baru dan kemudian Kelas Java.
- Di kolom Nama masukan DBHelper .
- Di bidang SuperClass mulailah mengetik SQLiteAsset (sekarang kelas SQliteAssetHelper akan dapat dipilih), jadi pilihlah. Ini harus diselesaikan menjadi:-
- Klik Oke.
-
Buat konstruktor untuk kelas DBHelper di sepanjang baris
:-
public class DBHelper extends SQLiteAssetHelper {
public static final String DBNAME = "test.db"; //<<<< must be same as file name
public static final int DBVERSION = 1;
public DBHelper(Context context) {
super(context,DBNAME,null,DBVERSION);
}
}
-
Buat instance DBHelper lalu akses database.
- Catatan untuk memudahkan kelas lain yang disebut CommonSQLiteUtilities , sebagaimana disalin dari Apakah ada metode yang membantu menyelesaikan masalah umum SQLite?
-
Buat instance dari cclass DBHelper menggunakan sesuatu di sepanjang baris
DBHelper mDBHlpr = new DBHelper(this);
-
menggunakan CommonSQLiteUtilities database diakses menggunakan :-
CommonSQLiteUtilities.logDatabaseInfo(mDBHlpr.getWritableDatabase());
-
MainActivity secara penuh menjadi
:-
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DBHelper mDBHlpr = new DBHelper(this);
CommonSQLiteUtilities.logDatabaseInfo(mDBHlpr.getWritableDatabase());
}
}
Hasilnya berhasil menjalankan logging :-
04-11 06:12:55.091 1401-1401/dbtest.com.dbtest W/SQLiteAssetHelper: copying database from assets...
database copy complete
04-11 06:12:55.123 1401-1401/dbtest.com.dbtest I/SQLiteAssetHelper: successfully opened database test.db
04-11 06:12:55.127 1401-1401/dbtest.com.dbtest D/SQLITE_CSU: DatabaseList Row 1 Name=main File=/data/data/dbtest.com.dbtest/databases/test.db
Database Version = 1
Table Name = mytable Created Using = CREATE TABLE mytable (
_id INTEGER PRIAMRY KEY,
mydata TEXT,
inserted INTEGER DEFAULT CURRENT_TIMESTAMP
)
Table = mytable ColumnName = _id ColumnType = INTEGER PRIAMRY KEY Default Value = null PRIMARY KEY SEQUENCE = 0
Table = mytable ColumnName = mydata ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0
Table = mytable ColumnName = inserted ColumnType = INTEGER Default Value = CURRENT_TIMESTAMP PRIMARY KEY SEQUENCE = 0
Table Name = android_metadata Created Using = CREATE TABLE android_metadata (locale TEXT)
Table = android_metadata ColumnName = locale ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0
- Dua baris pertama berasal dari
SQliteAssethelper
, sisanya darilogDatabaseInfo
metodeCommonSQLiteUtilities
kelas. - Pada proses selanjutnya, database tidak akan disalin karena sudah ada.