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

inisialisasi database sqlite android

Jawaban lain sepertinya tidak menjawab bagaimana sebenarnya mengisi database dengan nilai awal jadi saya akan membagikan bagaimana saya melakukannya di sini.

Pada dasarnya Anda menyimpan kolom database Anda sebagai array string dalam file xml. Saya hanya akan menampilkan satu array tetapi Anda bisa melakukan lebih banyak untuk kolom lainnya. (Namun, Anda harus berhati-hati, dengan beberapa kolom agar tidak mengacaukan urutan array, dan dengan demikian mengacaukan baris database Anda.)

Buat file /res/values/arrays.xml dan tambahkan array ke dalamnya.

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string-array name="my_array">

            <item>string 1</item>
            <item>string 2</item>
            <item>string 3</item>
            <item>string 4</item>
            <item>string 5</item>

    </string-array>

</resources>

Kemudian Anda bisa mendapatkan array itu ketika Anda membuat database di kelas pembantu Anda. Inilah yang saya lakukan:

private static class DatabaseHelper extends SQLiteOpenHelper {

    private final Context fContext;

    // constructor
    DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        fContext = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE " + TABLE_NAME + " ("
                + FIRST_COLUMN + " INTEGER PRIMARY KEY,"
                + SECOND_COLUMN + " TEXT NOT NULL,"
                + THIRD_COLUMN + " INTEGER,"
                + FOURTH_COLUMN + " TEXT NOT NULL"
                + ");");

        // Initialize the db with values from my_array.xml
        final int DEFAULT_THIRD_COLUMN = 1;
        final String DEFAULT_FOURTH_COLUMN = "";
        ContentValues values = new ContentValues();
        Resources res = fContext.getResources();
        String[] myArray = res.getStringArray(R.array.my_array);
        for (String item : myArray){
            values.put(SECOND_COLUMN, item);
            values.put(THIRD_COLUMN, DEFAULT_THIRD_COLUMN);
            values.put(FOURTH_COLUMN, DEFAULT_FOURTH_COLUMN);
            db.insert(TABLE_NAME, null, values);
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);

    }
}

Lihat tautan ini untuk bantuan lebih lanjut:

  • Sumber Daya String - Dokumen Array String
  • Android:Mengisi tabel dari file sumber daya menggunakan array string (SQLite)

Hal lain yang telah saya lakukan adalah membuat database sebelumnya dan kemudian menyalinnya ke folder database ketika aplikasi diinstal. Itu mungkin bekerja lebih baik jika Anda memiliki data dalam jumlah besar dan Anda tidak ingin mengunduh database dari Internet. Jika Anda ingin menyalin database Anda, lihat jawaban ini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hitung Jumlah Detik Sejak Tanggal/Waktu Tertentu di SQLite

  2. 5 cara untuk mengimplementasikan pencarian case-insensitive di SQLite dengan dukungan Unicode penuh

  3. Masalah dengan SQLiteOpenHelper di android 2.X dan 3.X

  4. Perbarui ListView berdasarkan ContentProvider yang didukung SQLite

  5. Tambahkan Hari ke Tanggal di SQLite