Implementasi Kueri Relasional di Aplikasi Android
9 mnt
kueri relasional di android pendahuluan dalam panduan ini, anda akan melakukan kueri relasional di parse dan mengimplementasikan aplikasi android menggunakan kueri ini anda akan belajar cara menyiapkan dan mengkueri data realistis menggunakan back4app dan android tutorial ini menggunakan aplikasi yang dibuat di android studio arctic fox 2020 3 1 dengan \<font color="#2166ae">compilesdk = 30\</font> , \<font color="#2166ae">minsdk = 23\</font> dan \<font color="#2166ae">targetsdk = 30\</font> kapan saja, anda dapat mengakses proyek android lengkap yang dibangun dengan tutorial ini di repositori github kami repositori contoh kotlin https //github com/templates back4app/android parse sdk kotlin repositori contoh java https //github com/templates back4app/android parse sdk java tujuan tujuan kami adalah mengkueri data yang disimpan di \<font color="#2166ae">back4app\</font> dari sebuah \<font color="#2166ae">android\</font> aplikasi berikut adalah pratinjau tentang apa yang akan kita capai prasyarat untuk menyelesaikan tutorial ini, kita perlu android studio https //developer android com/studio/index html sebuah aplikasi yang dibuat di back4app catatan ikuti tutorial aplikasi parse baru https //www back4app com/docs/get started/new parse app untuk belajar cara membuat aplikasi parse di back4app sebuah aplikasi android yang terhubung ke back4app catatan ikuti tutorial instalasi parse sdk https //www back4app com/docs/android/parse android sdk untuk membuat proyek android studio yang terhubung ke back4app sebuah perangkat (atau perangkat virtual https //developer android com/studio/run/managing avds html ) yang menjalankan android 4 1 (jelly bean) atau yang lebih baru mari kita mulai! sebelum langkah selanjutnya, kita perlu menghubungkan \<font color="#2166ae">back4app\</font> ke aplikasi kita anda harus menyimpan \<font color="#2166ae">appid\</font> dan \<font color="#2166ae">clientkey\</font> dari \<font color="#2166ae">back4app\</font> ke \<font color="#2166ae">string xml\</font> file dan kemudian inisialisasi \<font color="#2166ae">parse\</font> di \<font color="#2166ae">app java\</font> atau \<font color="#2166ae">app kt\</font> file ikuti tutorial aplikasi parse baru https //www back4app com/docs/android/parse android sdk jika anda tidak tahu cara menginisialisasi \<font color="#2166ae">parse\</font> ke aplikasi anda atau anda bisa mengunduh proyek yang kami bagikan tautan github di atas dan hanya mengedit \<font color="#2166ae">appid\</font> dan \<font color="#2166ae">clientkey\</font> bagian sesuai keinginan anda kapan saja, anda dapat mengakses proyek android lengkap yang dibangun dengan tutorial ini di repositori github kami repositori contoh kotlin https //github com/templates back4app/android parse sdk kotlin repositori contoh java https //github com/templates back4app/android parse sdk java 1 simpan beberapa data di back4app pada langkah ini, kita akan membuat sebuah kelas dengan konsol js dan kode javascript yang disediakan oleh \<font color="#2166ae">parse\</font> dan kita akan membuat kueri untuk kelas ini mari kita buat berbagai kelas, yang akan menjadi target kueri kita dalam panduan ini kelas kelas tersebut adalah \<font color="#2166ae">penulis\</font> , \<font color="#2166ae">buku\</font> , \<font color="#2166ae">penerbit\</font> dan \<font color="#2166ae">toko buku\</font> , di mana \<font color="#2166ae">buku\</font> memiliki hubungan 1\ n dengan \<font color="#2166ae">penerbit\</font> dan n\ n dengan \<font color="#2166ae">penulis\</font> , dan \<font color="#2166ae">toko buku\</font> memiliki hubungan n\ n dengan \<font color="#2166ae">buku\</font> di konsol parse js, dimungkinkan untuk menjalankan kode javascript secara langsung, mengkueri dan memperbarui konten basis data aplikasi anda menggunakan perintah sdk js jalankan kode di bawah ini dari konsol js anda dan masukkan data di back4app berikut adalah tampilan konsol js di dasbor anda silakan lanjutkan dan buat kelas dengan konten contoh berikut 1 // add objects and create tables 2 // authors 3 const authora = new parse object('author'); 4 authora set('name', 'aaron writer'); 5 await authora save(); 6 7 const authorb = new parse object('author'); 8 authorb set('name', 'beatrice novelist'); 9 await authorb save(); 10 11 const authorc = new parse object('author'); 12 authorc set('name', 'casey columnist'); 13 await authorc save(); 14 15 // publishers 16 const publishera = new parse object('publisher'); 17 publishera set('name', 'acacia publishings'); 18 await publishera save(); 19 20 const publisherb = new parse object('publisher'); 21 publisherb set('name', 'birch distributions'); 22 await publisherb save(); 23 24 // books 25 const booka = new parse object('book'); 26 booka set('title', 'a love story'); 27 booka set('publisher', publishera); 28 booka set('publishingdate', new date('05/07/1998')); 29 const bookarelation = booka relation("authors"); 30 bookarelation add(authora); 31 await booka save(); 32 33 const bookb = new parse object('book'); 34 bookb set('title', 'benevolent elves'); 35 bookb set('publisher', publisherb); 36 bookb set('publishingdate', new date('11/31/2008')); 37 const bookbrelation = bookb relation("authors"); 38 bookbrelation add(authorb); 39 await bookb save(); 40 41 const bookc = new parse object('book'); 42 bookc set('title', 'can you believe it?'); 43 bookc set('publisher', publisherb); 44 bookc set('publishingdate', new date('08/21/2018')); 45 const bookcrelation = bookc relation("authors"); 46 bookcrelation add(authora); 47 bookcrelation add(authorc); 48 await bookc save(); 49 50 // bookstore 51 const bookstorea = new parse object('bookstore'); 52 bookstorea set('name', 'books of love'); 53 const bookstorearelation = bookstorea relation("books"); 54 bookstorearelation add(booka); 55 await bookstorea save(); 56 57 const bookstoreb = new parse object('bookstore'); 58 bookstoreb set('name', 'fantasy books'); 59 const bookstorebrelation = bookstoreb relation("books"); 60 bookstorebrelation add(bookb); 61 await bookstoreb save(); 62 63 const bookstorec = new parse object('bookstore'); 64 bookstorec set('name', 'general books'); 65 const bookstorecrelation = bookstorec relation("books"); 66 bookstorecrelation add(booka); 67 bookstorecrelation add(bookc); 68 await bookstorec save(); 69 70 console log('success'); 2 kuery data dari aplikasi android sekarang setelah anda mengisi semua kelas, kita sekarang dapat melakukan beberapa kueri relasional di dalamnya mari kita mulai dengan memfilter \<font color="#2166ae">buku\</font> hasil berdasarkan penerbit, mencari yang termasuk dalam \<font color="#2166ae">penerbit\</font> “acacia publishings” (atau “penerbit a”) menggunakan \<font color="#2166ae">parsequery equalto\</font> metode dasar 1 progressdialog show(); 2 parsequery\<parseobject> publisherquery = new parsequery<>("publisher"); 3 publisherquery whereequalto("name", "acacia publishings"); 4 try { 5 parseobject publisher = publisherquery getfirst(); 6 parsequery\<parseobject> bookquery = new parsequery\<parseobject>("book"); 7 bookquery whereequalto("publisher", publisher); 8 bookquery findinbackground((objects, e) > { 9 progressdialog hide(); 10 if (e == null) { 11 initdata(objects); 12 } else { 13 toast maketext(this, e getlocalizedmessage(), toast length short) show(); 14 } 15 }); 16 } catch (parseexception e) { 17 progressdialog hide(); 18 e printstacktrace(); 19 }1 progressdialog? show() 2 val publisherquery = parsequery\<parseobject>("publisher") 3 publisherquery whereequalto("name", "acacia publishings") 4 try { 5 val publisher = publisherquery first 6 val bookquery = parsequery\<parseobject>("book") 7 bookquery whereequalto("publisher", publisher) 8 bookquery findinbackground { objects list\<parseobject>?, e parseexception? > 9 progressdialog? hide() 10 if (e == null) { 11 initdata(objects!!) 12 } else { 13 toast maketext(this, e localizedmessage, toast length short) show() 14 } 15 } 16 } catch (e parseexception) { 17 progressdialog? hide() 18 e printstacktrace() 19 } mari kita sekarang melakukan kueri yang mana \<font color="#2166ae">bookstore\</font> objek mengandung \<font color="#2166ae">book\</font> objek dengan tanggal penerbitan lebih besar dari 01/01/2010, menggunakan kueri dalam dengan \<font color="#2166ae">parsequery wheregreaterthan\</font> metode dan kemudian \<font color="#2166ae">parsequery wherematchesquery\</font> metode 1 progressdialog show(); 2 parsequery\<parseobject> bookquery = new parsequery<>("book"); 3 4 calendar calendar = calendar getinstance(); 5 calendar set(2010,1,1,59,59,59); 6 date date = calendar gettime(); 7 8 bookquery wheregreaterthan("publishingdate", date); 9 10 parsequery\<parseobject> bookstorequery = new parsequery<>("bookstore"); 11 bookstorequery wherematchesquery("books",bookquery); 12 bookstorequery findinbackground((objects, e) > { 13 progressdialog hide(); 14 if (e==null){ 15 initdata(objects); 16 } else { 17 toast maketext(this, e getlocalizedmessage(), toast length short) show(); 18 } 19 });1 progressdialog? show() 2 val bookquery = parsequery\<parseobject>("book") 3 val calendar = calendar getinstance() 4 calendar\[2010, 1, 1, 59, 59] = 59 5 val date = calendar time 6 bookquery wheregreaterthan("publishingdate", date) 7 val bookstorequery = parsequery\<parseobject>("bookstore") 8 bookstorequery wherematchesquery("books", bookquery) 9 bookstorequery findinbackground { objects list\<parseobject>?, e parseexception? > 10 progressdialog? hide() 11 if (e == null) { 12 initdata(objects!!) 13 } else { 14 toast maketext(this, e localizedmessage, toast length short) show() 15 } 16 } sekarang mari kita buat kueri relasional yang lebih kompleks, mencari \<font color="#2166ae">bookstore\</font> objek yang memiliki setidaknya satu \<font color="#2166ae">book\</font> yang ditulis oleh \<font color="#2166ae">author\</font> “aaron writer” (atau “authora”), menggunakan \<font color="#2166ae">whereequalto\</font> dan \<font color="#2166ae">wherematchesquery\</font> 1 progressdialog show(); 2 parsequery\<parseobject> authorquery = new parsequery<>("author"); 3 authorquery whereequalto("name","aaron writer"); 4 try { 5 parseobject authora = authorquery getfirst(); 6 parsequery\<parseobject> bookquery = new parsequery<>("book"); 7 bookquery whereequalto("authors",authora); 8 9 parsequery\<parseobject> bookstorequery = new parsequery<>("bookstore"); 10 bookstorequery wherematchesquery("books",bookquery); 11 12 bookstorequery findinbackground((objects, e) > { 13 progressdialog hide(); 14 if (e==null){ 15 initdata(objects); 16 } else { 17 toast maketext(this, e getlocalizedmessage(), toast length short) show(); 18 } 19 }); 20 21 22 } catch (parseexception e) { 23 progressdialog hide(); 24 e printstacktrace(); 25 }1 progressdialog? show() 2 val authorquery = parsequery\<parseobject>("author") 3 authorquery whereequalto("name", "aaron writer") 4 try { 5 val authora = authorquery first 6 val bookquery = parsequery\<parseobject>("book") 7 bookquery whereequalto("authors", authora) 8 val bookstorequery = parsequery\<parseobject>("bookstore") 9 bookstorequery wherematchesquery("books", bookquery) 10 bookstorequery findinbackground { objects list\<parseobject>?, e parseexception? > 11 progressdialog? hide() 12 if (e == null) { 13 initdata(objects!!) 14 } else { 15 toast maketext(this, e localizedmessage, toast length short) show() 16 } 17 } 18 } catch (e parseexception) { 19 progressdialog? hide() 20 e printstacktrace() 21 } selesai! di akhir panduan ini, anda telah belajar bagaimana kueri relasional bekerja di parse dan bagaimana cara melakukannya di back4app dari aplikasi android