SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

Membaca database dari folder aset

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

  1. 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

  2. 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 .

  3. Tahap selanjutnya copy database ke folder assets.

    1. Membuat aset folder di src/main folder, jika belum ada.
    2. Membuat folder databases"" di **assets folder, jika belum ada.
    3. Menyalin file database (test.db dalam contoh ini) ke dalam folder database.

  4. Tahap selanjutnya adalah menyiapkan proyek untuk menggunakan SQLiteAssetHelper dengan memasukkannya ke dalam build.gradle Aplikasi .

    1. Edit build.gradle di Aplikasi map.
    2. Tambahkan baris implementation 'com.readystatesoftware.sqliteasset:sqliteassethelper:2.0.1' dalam bagian dependensi.
    3. Klik Sinkronkan Sekarang

  1. Buat kelas yang merupakan subkelas dari kelas SQLiteAssethelper yang baru/sekarang tersedia. Untuk latihan ini akan disebut DBHelper .

    1. Klik Kanan MainActivity kelas java, pilih Baru dan kemudian Kelas Java.
    2. Di kolom Nama masukan DBHelper .
    3. Di bidang SuperClass mulailah mengetik SQLiteAsset (sekarang kelas SQliteAssetHelper akan dapat dipilih), jadi pilihlah. Ini harus diselesaikan menjadi:-
    4. Klik Oke.
  2. 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);
    }
}
  1. Buat instance DBHelper lalu akses database.

    1. Catatan untuk memudahkan kelas lain yang disebut CommonSQLiteUtilities , sebagaimana disalin dari Apakah ada metode yang membantu menyelesaikan masalah umum SQLite?
    2. Buat instance dari cclass DBHelper menggunakan sesuatu di sepanjang baris

      • DBHelper mDBHlpr = new DBHelper(this);
    3. menggunakan CommonSQLiteUtilities database diakses menggunakan :-

      • CommonSQLiteUtilities.logDatabaseInfo(mDBHlpr.getWritableDatabase());
    4. 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 dari logDatabaseInfo metode CommonSQLiteUtilities kelas.
  • Pada proses selanjutnya, database tidak akan disalin karena sudah ada.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gabung Kiri SQLite

  2. Fungsi Tanggal &Waktu SQLite

  3. Android dengan Kamar - Cara menyetel kunci asing yang dapat dibatalkan

  4. Tidak dapat memuat database sqlite saat pertama kali dijalankan

  5. Tutup tidak pernah secara eksplisit dipanggil di Database