Menggunakan database adalah cara apa tepat untuk menyimpan data terstruktur atau data berulang,seperti informasi kontak. Halaman ini berasumsi bahwa Andasudah familier mencapai database SQL secara umum dan akan help Anda memulaidatabase SQLite di games-online4.com. Api yang nanti Anda perlukan untuk menggunakan databasedi games-online4.com tersedia dalam paket games-online4.com.database.sqlite.

Anda sedang menonton: Penyebab data tidak masuk ke database


Perhatian: Meskipun api ini terutang berguna, levelnya tampan rendah serta memerlukan crowd waktu dan upaya untuk menggunakannya:

tidak ada verifikasi kueri SQL mentah pada waktu kompilasi. Saat grafik data berubah, anda perlu mengupdate kueri SQL yang terpengaruh secara manual. Proses ini dapat memakan crowd waktu dan rentan terhadap error. Their harus menggunakan crowd kode boilerplate buat melakukan mengubah antara kueri SQL dan objek data.

Untuk alasannya ini, kami sangat merekomendasikan penggunaan Library Persistensi Room seperti lapisan abstraksi untuk mengakses informasi batin database SQLite aplikasi Anda.


Menentukan skema dan kontrak

Salah satu prinsip terutama database SQL adalah skemanya: deklarasiformal kyung cara database diatur. Skema ini tercermin dalam Pernyataan SQLyang milik mereka gunakan buat membuat database. Ada baiknya Andamembuat kelas pendamping apa disebut mencapai kelas kontrak, yang secara eksplisit menetapkantata letak skema Anda batin cara yang sistematis dan catatan sendiri.

Kelas kontrak adalah penampung karena konstanta apa menentukan nama URI,tabel, dan kolom. Kelas kontrak memungkinkan dari mereka menggunakan konstantayang sama pada semua kelas lain dalam paket apa sama. Chapter ini memungkinkan Anda mengubah namakolom di satu tempat, then mengatur agar perubahan tersebut disebarkan usai seluruh kode.

Cara yang tepat karena mengatur kelas kontrak adalah dengan memberikan ketetapannya yangbersifat global diatas seluruh database dari mereka di tingkat root kelas tersebut. Kemudian, karena kelas dalamuntuk setiap tabel. Setiap kelas batin akan enumerasi kolom tabel apa terkait.

Catatan: mencapai menerapkan antarmuka BaseColumnskelas dalam Anda dapat mewarisi kolom kunci utamayang disebut _ID yang diharapkan buat dimiliki melalui beberapa kelas games-online4.com kemudian CursorAdapter. Halaman ini noël wajib, tetapi dapat membantu database Andabekerja secara harmonis mencapai framework games-online4.com.

Contohnya, kontrak berikut menentukan nama tabel dan namu kolom untuksatu tabel apa merepresentasikan feed RSS:


Kotlin

object FeedReaderContract // Table materials are grouped together in an cotton object. Thing FeedEntry : BaseColumns const val TABLE_NAME = "entry" const val COLUMN_NAME_TITLE = "title" const val COLUMN_NAME_SUBTITLE = "subtitle"

Java

public final course FeedReaderContract // To stop someone native accidentally instantiating the contract class, // do the constructor private. Private FeedReaderContract() /* Inner class that specifies the table materials */ publik static course FeedEntry implements BaseColumns publik static final String TABLE_NAME = "entry"; public static final String COLUMN_NAME_TITLE = "title"; publik static last String COLUMN_NAME_SUBTITLE = "subtitle";

Membuat database keuntungan SQL helper

Setelah tentukan tampilan database, anda harus menerapkan metodeyang become membuat serta mengelola database dan tabel. Berikut adalah banyak pernyataanumum untuk membuat dan menghapus tabel:


Kotlin

private const val SQL_CREATE_ENTRIES = "CREATE TABLE $FeedEntry.TABLE_NAME (" + "$BaseColumns._ID INTEGER main KEY," + "$FeedEntry.COLUMN_NAME_TITLE TEXT," + "$FeedEntry.COLUMN_NAME_SUBTITLE TEXT)"private const val SQL_DELETE_ENTRIES = "DROP TABLE IF exist $FeedEntry.TABLE_NAME"

Java

private static last String SQL_CREATE_ENTRIES = "CREATE TABLE " + FeedEntry.TABLE_NAME + " (" + FeedEntry._ID + " INTEGER major KEY," + FeedEntry.COLUMN_NAME_TITLE + " TEXT," + FeedEntry.COLUMN_NAME_SUBTITLE + " TEXT)";private static final String SQL_DELETE_ENTRIES = "DROP TABLE IF exists " + FeedEntry.TABLE_NAME;
Sama seperti file apa disimpan di penyimpananinternal perangkat, games-online4.com tabungan database Anda dalam folder memiliki aplikasi. Data dari mereka akanselalu aman buat secara default area ini tidakdapat terlibat oleh aplikasi lain ataukah oleh pengguna.

Kelas SQLiteOpenHelper berisi kumpulan fire yang bergunauntuk mengelola database Anda.Saat kelas ini digunakan untuk memperoleh referensi ke database, sistemhanya akan does operasipembuatan dan upgrade database, yang mungkin memerlukan kerumunan waktu, hanya ketikadiperlukan; bukan pada saat aplikasi dimulai. Yang perlu milik mereka lakukan hanyalah memanggilgetWritableDatabase() ataugetReadableDatabase().

Catatan: untuk operasi dapat berjalan lama,pastikan dari mereka memanggil getWritableDatabase() ataukah getReadableDatabase() di object latar belakang.Lihat keuntungan thread di games-online4.com untuk informasi selengkapnya.

Untuk menggunakan SQLiteOpenHelper, untuk subclass yangmengganti cara callback onCreate() danonUpgrade(). Milik mereka mungkinjuga harus menerapkan metodeonDowngrade() atauonOpen(),tetapi keduanya noël diperlukan.

Misalnya, berikut adalah dikerahkan SQLiteOpenHelper yangmenggunakan beberapa perintah yang ditampilkan di atas:


Kotlin

class FeedReaderDbHelper(context: Context) : SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) override funny onCreate(db: SQLiteDatabase) db.execSQL(SQL_CREATE_ENTRIES) override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) // This database is just a cache for digital data, for this reason its upgrade aturan is // to merely to discard the data and mulai over db.execSQL(SQL_DELETE_ENTRIES) onCreate(db) override funny onDowngrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) onUpgrade(db, oldVersion, newVersion) companion thing // If you adjust the database schema, you should increment the database version. Const val DATABASE_VERSION = 1 const val DATABASE_NAME = "FeedReader.db"

Java

public class FeedReaderDbHelper extend SQLiteOpenHelper // If you change the database schema, you should increment the database version. Publik static final int DATABASE_VERSION = 1; public static last String DATABASE_NAME = "FeedReader.db"; public FeedReaderDbHelper(Context context) super(context, DATABASE_NAME, null, DATABASE_VERSION); publik void onCreate(SQLiteDatabase db) db.execSQL(SQL_CREATE_ENTRIES); public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) // This database is just a cache for online data, for this reason its upgrade aturan is // to merely to discard the data and awal over db.execSQL(SQL_DELETE_ENTRIES); onCreate(db); publik void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) onUpgrade(db, oldVersion, newVersion);

Kotlin

val dbHelper = FeedReaderDbHelper(context)

Java

FeedReaderDbHelper dbHelper = brand-new FeedReaderDbHelper(getContext());

Memasukkan informasi nanti dalam database

Sisipkan data nanti dalam database mencapai meneruskan objek ContentValueske cara insert():


Kotlin

// gets the data repository in write modeval db = dbHelper.writableDatabase// create a new map of values, where pillar names space the keysval values = ContentValues().apply put(FeedEntry.COLUMN_NAME_TITLE, title) put(FeedEntry.COLUMN_NAME_SUBTITLE, subtitle)// Insert the new row, return the primary an essential value that the new rowval newRowId = db?.insert(FeedEntry.TABLE_NAME, null, values)

Java

// gets the data repository in compose modeSQLiteDatabase db = dbHelper.getWritableDatabase();// create a brand-new map that values, where column names space the keysContentValues worths = brand-new ContentValues();values.put(FeedEntry.COLUMN_NAME_TITLE, title);values.put(FeedEntry.COLUMN_NAME_SUBTITLE, subtitle);// Insert the brand-new row, return the primary an essential value the the brand-new rowlong newRowId = db.insert(FeedEntry.TABLE_NAME, null, values);
Argumen pertama karena insert()cukup berisi nama belakang tabel.

Argumen kedua memberi kenal framework tentang maafkan saya yang harus dilakukan jikaContentValues lubang (yaitu, dari mereka tidakput (memasukkan) cost apa pun).Jika milik mereka menetapkan namu sebuah kolom, framework become menyisipkan baris dan menetapkannilai kolom tersebut setelah null. Jika their menetapkan null, sepertidalam contoh kode ini, framework noel akan menyisipkan garis ketika biaya tidak ada.

Metode insert() kembali ID untukbaris apa baru dibuat, atau menjadi menampilkan -1 jika terjadi error saat pintu masuk data. Halaman ini dapat terjadijika ada konflik dengan data yang sudah ada batin database.

Membaca insula dari database

Untuk baca secara terpisah dari database, gunakan cara query(), mencapai meneruskan kriteria pemilihan dan kolom yang diinginkan.Metode ini menggabungkan elemen insert()dan update(), tetapi berpesta kolomnyamenentukan data yang ingin diambil ("proyeksi"), bukan data apa akan dimasukkan. Hasilkueri khasnya kepada Anda batin objek Cursor.


Kotlin

val db = dbHelper.readableDatabase// mendefinisikan a forecast that states which columns indigenous the database// you will actually usage after this query.val estimate = arrayOf(BaseColumns._ID, FeedEntry.COLUMN_NAME_TITLE, FeedEntry.COLUMN_NAME_SUBTITLE)// Filter results WHERE "title" = "My Title"val an option = "$FeedEntry.COLUMN_NAME_TITLE = ?"val selectionArgs = arrayOf("My Title")// just how you desire the outcomes sorted in the resulting Cursorval sortOrder = "$FeedEntry.COLUMN_NAME_SUBTITLE DESC"val cursor = db.query( FeedEntry.TABLE_NAME, // The table come query projection, // The variety of columns come return (pass null to obtain all) selection, // The columns because that the where clause selectionArgs, // The worths for the whereby clause null, // don"t group the rows null, // don"t filter by row groups sortOrder // The sort order)

Java

SQLiteDatabase db = dbHelper.getReadableDatabase();// mendefinisikan a estimate that specifies which columns indigenous the database// you will actually usage after this query.String<> projection = BaseColumns._ID, FeedEntry.COLUMN_NAME_TITLE, FeedEntry.COLUMN_NAME_SUBTITLE ;// Filter results WHERE "title" = "My Title"String choice = FeedEntry.COLUMN_NAME_TITLE + " = ?";String<> selectionArgs = "My Title" ;// just how you desire the results sorted in the result CursorString sortOrder = FeedEntry.COLUMN_NAME_SUBTITLE + " DESC";Cursor cursor = db.query( FeedEntry.TABLE_NAME, // The table come query projection, // The array of columns come return (pass null to gain all) selection, // The columns for the whereby clause selectionArgs, // The values for the wherein clause null, // don"t group the rows null, // don"t filter by row groups sortOrder // The kind order );
Argumen ketiga dan 14 (selection and also selectionArgs)digabungkan untuk membuat klausa WHERE. Bahas ini thalamus secara memutuskan dari kueripemilihan sehingga menjadi dikecualikan silam digabungkan. Oleh untuk itu, pernyataan sulungnya Anda tidak akan terpengaruh olehpenambahan SQL. Untuk mengetahui information selengkapnya sekitar semua argumen, lihatreferensi query().

Untuk pemandangan baris batin kursor, gunakan deviasi satu manner pemindahan Cursor,yang harus selalu dari mereka panggil sebelum mulai melafalkan nilai. Kursor dimulai padaposisi -1 sehingga memanggil moveToNext() ini adalah menempatkan "posisi baca" padaentri pertama di dalam hasil dan kembali apakah kursor sudah melewati entri terakhir dalamkumpulan hasil ataukah belum. Karena setiap baris, their dapat membaca biaya kolom dengan memanggil salah satu perilaku getCursor, such getString() atau getLong(). Karena setiap perilaku get,Anda harus meneruskan lokasi indeks kolom yang Anda inginkan, apa bisa their dapatkan mencapai memanggilgetColumnIndex() ataugetColumnIndexOrThrow(). Ke selesaimengiterasi hasilnya, panggil close() di atas kursoruntuk melepaskan resource-nya.Misalnya, berikut adalah cara mendapatkan segenap ID artikel yang disimpan batin kursordan menambahkannya usai daftar:


Kotlin

val itemIds = mutableListOf()with(cursor) ketika (moveToNext()) val itemId = getLong(getColumnIndexOrThrow(BaseColumns._ID)) itemIds.add(itemId)

Java

List itemIds = brand-new ArrayList();while(cursor.moveToNext()) lengthy itemId = cursor.getLong( cursor.getColumnIndexOrThrow(FeedEntry._ID)); itemIds.add(itemId);cursor.close();

Menghapus insula dari database

Untuk menghapus pengelolaan dari tabel, dari mereka harus memberikan kriteria putra sulungnya yangmengidentifikasi baris ke metode delete(). Mekanismenyabekerja dalam cara yang sama kemudian argumen yang tertua untukmetode query(). Tangani itu ini membagispesifikasi pemilihan were klausa putra sulungnya dan bahas pemilihan. Klausamenentukan kolom yang harus dilihat, juga memungkinkan Anda buat menggabungkan tangani itu pengujiankolom. Argumen adalah pengeluaran yang akan digunakan untuk pengujian, yang terikat dengan klausa tersebut.Karena hasilnya noel ditangani seperti Pernyataan SQL biasa, penambahanSQL pun noel akan berpengaruh.


Kotlin

// define "where" part of query.val an option = "$FeedEntry.COLUMN_NAME_TITLE like ?"https:// Specify debates in placeholder order.val selectionArgs = arrayOf("MyTitle")// masalah SQL statement.val deletedRows = db.delete(FeedEntry.TABLE_NAME, selection, selectionArgs)

Java

// mendefinisikan "where" component of query.String selection = FeedEntry.COLUMN_NAME_TITLE + " like ?";// Specify debates in placeholder order.String<> selectionArgs = "MyTitle" ;// issue SQL statement.int deletedRows = db.delete(FeedEntry.TABLE_NAME, selection, selectionArgs);
Nilai hasil untuk metode delete()menunjukkan jumlah baris apa telah dihapus dari database.

Mengupdate database

Bila milik mereka perlu memodifikasi subset nilai database, gunakanmetode update().

Memperbarui tabel become menggabungkan sintaks ContentValues dariinsert() dengan sintaks WHEREdari delete().


Kotlin

val db = dbHelper.writableDatabase// new value for one columnval title = "MyNewTitle"val values = ContentValues().apply put(FeedEntry.COLUMN_NAME_TITLE, title)// Which row to update, based upon the titleval choice = "$FeedEntry.COLUMN_NAME_TITLE like ?"val selectionArgs = arrayOf("MyOldTitle")val counting = db.update( FeedEntry.TABLE_NAME, values, selection, selectionArgs)

Java

SQLiteDatabase db = dbHelper.getWritableDatabase();// brand-new value because that one columnString judul = "MyNewTitle";ContentValues values = new ContentValues();values.put(FeedEntry.COLUMN_NAME_TITLE, title);// Which heat to update, based upon the titleString choice = FeedEntry.COLUMN_NAME_TITLE + " choose ?";String<> selectionArgs = "MyOldTitle" ;int counting = db.update( FeedReaderDbHelper.FeedEntry.TABLE_NAME, values, selection, selectionArgs);
Nilai tujuan dari metode update() adalahjumlah baris yang terpengaruh di dalam database.

Mempertahankan koneksi database

Karena getWritableDatabase()dan getReadableDatabase()sulit dipanggil jika database ditutup, hubungan databaseharus tetap suspended selama anda perlu mengaksesnya. Biasanya, menjadi lebih optimal untuk menutup database dalamonDestroy() Aktivitas pemanggilan.


Men-debug database Anda

games-online4.com SDK menyertakan alat shell sqlite3 yang memungkinkan anda menjelajahiisi tabel, menjalankan perintah SQL, dan does fungsi berbiaya lainnya padadatabase SQLite. Untuk mengetahui insula selengkapnya, lihat cara mengeluarkan perintah shell.

Lihat lainnya: Cara Mengolah Okra Untuk Diabetes, Konsumsi Getah Okra Agar Diabetes Sembuh


Content and also code samples on this page are topic to the licenses explained in the isi License. Java is a registered trademark that Oracle and/or the affiliates.


< "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Missing the info I need" , "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Too facility / too countless steps" , "type": "thumb-down", "id": "outOfDate", "label":"Out the date" , "type": "thumb-down", "id": "translationIssue", "label":"Translation issue" , "type": "thumb-down", "id": "samplesCodeIssue", "label":"Samples / code issue" , "type": "thumb-down", "id": "otherDown", "label":"Other" > < "type": "thumb-up", "id": "easyToUnderstand", "label":"Easy come understand" , "type": "thumb-up", "id": "solvedMyProblem", "label":"Solved my problem" , "type": "thumb-up", "id": "otherUp", "label":"Other" >

Selengkapnya tentang games-online4.com

Temukan

Perangkat games-online4.com

Rilis

Dokumentasi dan hasil Download

Dukungan


*
Language english Bahasa Indonesia Español – América Latina Português – Brasil 中文 – 简体 日本語 한국어