Membuat Aplikasi CRUD dengan Basic4Android
|Setiap aplikasi baik yang berbasis desktop, web, maupun mobile biasanya terdapat yang namanya CRUD di dalamnya. CRUD ini sendiri merupakan akronim dari Create, Read, Update, dan Delete. Lalu apa fungsi CRUD ini? Tak lain tak bukan adalah sebagai proses untuk memanipulasi data di dalam database melalui Interface aplikasinya. Silakan persiapkan database mylogin, yang pada postingan sebelumnya sudah dibuat. Tambahkan satu tabel lagi dengan nama: barang. Dengan field-field berikut:
Jika masih bingung bagaimana cara menambahkan tabel di database SQLite, Anda bisa lihat ini:
Oke, kita mulai sekarang…
- Buka project MyLogin.
- Lalu tambahkan dua activity baru dengan nama: BarangList dan BarangView.
- Buka activity Main, lalu pada Sub Process_Globals buat deklarasi baru untuk nama tabel barang. Maka nanti akan seperti code di bawah ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub Process_Globals 'These global variables will be declared once when the application starts. 'These variables can be accessed from all modules. 'Deklarasikan variabel object SQL-nya (ini berasal dari Library SQL). Dim SQL As SQL 'Tentukan dimana letak database disimpan, 'Yaitu di root SD Card/Android/data/folder package project/files. Dim DBDir As String : DBDir = File.DirDefaultExternal 'Tentukan nama database yang akan digunakan di project ini. Dim DBName As String : DBName = "mylogin.db" 'Tentukan nama tabel yang akan digunakan di project ini. Dim UserTable As String = "user" Dim BarangTable As String = "barang" End Sub |
- Buka activity Menu, buat layout baru dengan nama: menu. Lalu tambahkan satu buah Button. Dan setting properties-nya seperti gambar berikut:
- Deklarasikan Button-nya. Dan tambahkan event Click untuk Button ini. Lalu pada fungsi BtnBarang_Click tambahkan code: StartActivity(BarangList).
- Maka pada activity Menu akan ada tambahan code-code seperti ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub Globals 'These global variables will be redeclared each time the activity is created. 'These variables can only be accessed from this module. Dim BtnBarang As Button End Sub Sub Activity_Create(FirstTime As Boolean) 'Do not forget to load the layout file created with the visual designer. For example: Activity.LoadLayout("menu") 'Set judul untuk activity ini Activity.Title = "Menu" End Sub Sub BtnBarang_Click StartActivity(BarangList) End Sub |
- Beralih ke activity BarangList. Pada Sub Globals masukkan code-code berikut:
1 2 3 4 5 6 7 8 9 |
Sub Globals 'These global variables will be redeclared each time the activity is created. 'These variables can only be accessed from this module. 'ListView untuk menampilkan daftar barang Dim LvBarang As ListView 'Button untuk membuat barang baru Dim BtnCreate As Button End Sub |
- Pada event Activity_Create masukkan code-code seperti di bawah ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub Activity_Create(FirstTime As Boolean) 'Do not forget to load the layout file created with the visual designer. For example: 'Activity.LoadLayout("Layout1") 'Set judul untuk activity ini. Activity.Title = "List Barang" 'Initialize ListView-nya. LvBarang.Initialize("LvBarang") 'Initialize Button-nya. BtnCreate.Initialize("BtnCreate") 'Set text untuk Button. BtnCreate.Text = "Create Barang" 'Tampilkan ListView di activity ini. Activity.AddView(LvBarang, 0,0,100%x,85%y) 'Tampilkan Button di activity ini. Activity.AddView(BtnCreate, 0,85%y,100%x,15%y) End Sub |
- Buat fungsi baru dengan nama FillLvBarang.
1 2 3 4 5 6 |
Sub FillLvBarang 'Pilih semua barang yang ada di database untuk ditampilkan di ListView. Dim query As String query = " SELECT kode, nama, id FROM " & Main.BarangTable DBUtils.ExecuteListView(Main.SQL, query, Null, 0, LvBarang, True) End Sub |
- Lalu buat fungsi baru lagi untuk event Click pada Button dengan nama BtnCreate_Click.
1 2 3 4 5 6 |
Sub BtnCreate_Click 'Saat Button Create diklik, maka bukan BarangView 'Dan set ID menjadi -1 BarangView.ID = -1 StartActivity(BarangView) End Sub |
- Ada satu fungsi event lagi yang harus dibuat. Yaitu event Click pada ListView. Oke, silakan dibuat seperti code berikut ini:
1 2 3 4 5 6 7 8 |
Sub LvBarang_ItemClick (Position As Int, Value As Object) Dim v(2) As String = Value 'Saat ListView diklik, set ID di BarangView dengan ID barang yg diklik/dipilih. 'Dari mana v(2) ini? yaitu dari array index ke 2, dari query sql yg ada di fungsi FillLvBarang. 'v(0)=kode, v(1)=nama, v(2)=id. BarangView.ID = v(2) StartActivity(BarangView) End Sub |
- Panggil fungsi FillLvBarang pada event Activity_Resume.
1 2 3 4 |
Sub Activity_Resume 'Refresh data FillLvBarang End Sub |
- Kemudian beralih ke activity BarangView. Pada Sub Process_Globals buat variabel baru dengan nama ID.
1 2 3 4 5 6 7 |
Sub Process_Globals 'These global variables will be declared once when the application starts. 'These variables can be accessed from all modules. 'Variabel ID untuk menampung ID barang. Dim ID As Int End Sub |
- Buat object-object seperti Panel, Label, EditText dan Button, deklarasikan semua object tersebut di Sub Globals.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub Globals 'These global variables will be redeclared each time the activity is created. 'These variables can only be accessed from this module. Dim PnlBarang As Panel Dim LblKode As Label Dim LblNama As Label Dim LblKeterangan As Label Dim EdtKode As EditText Dim EdtNama As EditText Dim EdtKeterangan As EditText Dim BtnSave As Button Dim BtnDelete As Button End Sub |
- Pada event Activity_Create masukkan beberapa fungsi yang nanti akan digunakan dalam activity ini. Lengkapnya bisa dilihat code-code berikut ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub Activity_Create(FirstTime As Boolean) 'Do not forget to load the layout file created with the visual designer. For example: 'Activity.LoadLayout("Layout1") Activity.Title = "Create Barang" 'Fungsi untuk initialize object-object yang ada. InitObject 'Fungsi untuk set label pada object-object yang ada. SetLabel 'Fungsi untuk load data barang di databse LoadBarang 'Fungsi untuk menampilkan object-object di activity ini. SetObjectView End Sub |
- Semua fungsi yang dipanggil di atas pasti akan berwarna merah, karena fungsi-fungsi tersebut belum pernah dibuat. Maka dari itu buatlah fungsi-fungsi baru seperti berikut:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
Sub InitObject LblKode.Initialize("") LblNama.Initialize("") LblKeterangan.Initialize("") EdtKode.Initialize("EdtKode") EdtNama.Initialize("EdtNama") EdtKeterangan.Initialize("EdtKeterangan") BtnSave.Initialize("BtnSave") BtnDelete.Initialize("BtnDelete") PnlBarang.Initialize("PnlBarang") End Sub Sub SetLabel LblKode.Text = "Kode" LblNama.Text = "Nama" LblKeterangan.Text = "Keterangan" 'Disable kode, karena ini akan terisi otomatis. EdtKode.Enabled = False 'Jika create barang baru, Button-nya beri nama: Save. Dan disable Button delete. 'Selain itu, Button-nya beri nama: Update. Dan enable Button delete. If ID = -1 Then BtnSave.Text = "Save" BtnDelete.Enabled = False Else BtnSave.Text = "Update" BtnDelete.Text = True End If BtnDelete.Text = "Delete" End Sub Sub LoadBarang 'Pilih barang sesuai dengan ID barang yang dipilih. Dim query As String query = " SELECT * FROM " & Main.BarangTable & " WHERE id = ?" Dim m As Map m = DBUtils.ExecuteMap(Main.SQL, query, Array As String(ID)) 'Jika data tidak ditemukan, dan jika ID = -1 maka create barang. If m.IsInitialized = False Then If ID = -1 Then Dim kode As String = GenerateKode EdtKode.Text = kode EdtNama.Text = "" EdtKeterangan.Text = "" End If 'Jika data ditemukan, maka isi EditText yang ada dengan data-data tsb. Else If m.Get("kode") <> Null Then EdtKode.Text = m.Get("kode") End If If m.Get("nama") <> Null Then Activity.Title = "View: " & m.Get("nama") EdtNama.Text = m.Get("nama") End If If m.Get("keterangan") <> Null Then EdtKeterangan.Text = m.Get("keterangan") End If End If End Sub Sub SetObjectView Dim ctop As Int = 20dip Dim labelHeight As Int = 30dip Dim textHeight As Int = 40dip 'Taruh Label dan EditText di Panel. PnlBarang.AddView(LblKode, 20dip, ctop, 100%x-40dip, 30dip) : ctop = ctop + labelHeight PnlBarang.AddView(EdtKode, 20dip, ctop, 100%x-40dip, 40dip) : ctop = ctop + textHeight PnlBarang.AddView(LblNama, 20dip, ctop, 100%x-40dip, 30dip) : ctop = ctop + labelHeight PnlBarang.AddView(EdtNama, 20dip, ctop, 100%x-40dip, 40dip) : ctop = ctop + textHeight PnlBarang.AddView(LblKeterangan, 20dip, ctop, 100%x-40dip, 30dip) : ctop = ctop + labelHeight PnlBarang.AddView(EdtKeterangan, 20dip, ctop, 100%x-40dip, 40dip) : ctop = ctop + textHeight 'Taruh Panel dan Button di activity. Activity.AddView(PnlBarang, 0,0,100%x, 85%y) Activity.AddView(BtnSave, 0, 85%y, 50%x, 15%y) Activity.AddView(BtnDelete, 50%x, 85%y, 50%x, 15%y) End Sub |
- Bisa kita lihat pada fungsi LoadBarang, di situ ada baris code yang berwarna merah, yaitu: GenerateKode. Untuk itu, sekarang buatlah fungsi ini seperti berikut:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Sub GenerateKode Dim q As String = "select id from " & Main.BarangTable Dim qs As List = DBUtils.ExecuteMemoryTable(Main.SQL, q, Null, 0) Dim count As String = qs.Size + 1 If count < 10 Then count = "000" & count Else If count < 100 Then count = "00" & count Else If count < 1000 Then count = "0" & count Else count = count End If Log("count: " & count) Dim kd As String = "BRG-" & count Return kd End Sub |
- Kemudian buatlah fungsi untuk meng-handle event Click dari Button save dan Button delete. Masukkan code-code di bawah ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
Sub BtnSave_Click() Dim listOfMaps As List : listOfMaps.Initialize Dim m As Map : m.Initialize m.put("kode", EdtKode.Text) m.put("nama", EdtNama.Text) m.put("keterangan", EdtKeterangan.Text) listOfMaps.Add(m) 'Jika create baru, maka save. 'Selain itu, maka update. If ID = -1 Then DBUtils.InsertMaps(Main.SQL, Main.BarangTable, listOfMaps) ToastMessageShow("Barang has been created.", True) 'Balik lagi ke List Barang Activity.Finish Else Dim w As Map : w.Initialize w.Put("id", ID) DBUtils.UpdateRecord2(Main.SQL, Main.BarangTable, m, w) ToastMessageShow("Barang has been updated.", True) 'Refresh data LoadBarang End If End Sub Sub BtnDelete_Click() Dim result As Int = Msgbox2( "Apakah Anda yakin ingin menghapus barang: " & EdtNama.Text & "?", "Confirmation", "Yes", "No", "", _ LoadBitmap (File.DirAssets, "confirm.png")) If result = DialogResponse.Positive Then Dim w As Map : w.Initialize w.Put("id", ID) DBUtils.DeleteRecord(Main.SQL, Main.BarangTable , w) ToastMessageShow("Barang has been deleted.", True) 'Balik lagi ke List Barang Activity.Finish End If End Sub |
- Save, kemudian Run/Compile project ini dalam versi Release.
- Kemudian lihat, apa yang terjadi…
Oke, demikian cara membuat CRUD aplikasi android dengan Basic4Android. Semoga bermanfaat. Dan jika masih ada kesulitan silakan tanyakan saja di form komentar 🙂
Silakan download source code lengkapnya di sini.
Oh iya, kalau misalkan CRUD-nya menggunakan database MySQL bagaimana cara membuatnya? Silakan simak postingan ini:
nice post mas 🙂
mantab broooo untuk tutorialnyaa.
mau tutorial sistem penjualan via android dunkzz bos. 🙂
tunggu aja tanggal mainnya bro 🙂
Mantap.. mas.. terimakasih atas tutorialnya.. yang sistem penjualan via android.. dah di share juga kah ? hehehhehe.. ikut menanti saya…
mantab broo.
kalo untuk tmpilin gambar dri kode barang gimana broo?
ini maksudnya, di list barangnya ada gambarnya gitu?
iya broo. kayaa tokopediaa versi androidnya hehe
misalkan kita pilih kategori barang lalu muncul sepatu misalkan. nah saat klik sepatu muncul dah gammbarr n kodenyaa jdi saat itu bisaa pesan jg bro
iya broo. kayaa tokopediaa versi androidnya hehe
misalkan kita pilih kategori barang lalu muncul sepatu misalkan. nah saat klik sepatu muncul dah gammbarr n kodenyaa jdi saat itu bisaa pesan jg bro. kurang lebih bgtu
saya bermasalah di bagian DButils, dimanakah saya bisa mendapatkan module dbutils.bas ??
Untuk DBUtils bisa lihat poin ke 3-4 pada postingan ini.
ok, sudah… tapi saya bermasalah lagi di “cur as ResultSet”, ResultSet itu pkai library apa lgi?
Itu Cursor. Pakai library SQL.
gimana cara ngatasin DBUtils nya om???
sy library scrowview2d blm ada mas, punya linknya? makasih banyak..
Ini: ScrollView2D
saya mau tanya mas. itu program sama database nya disimpan dimana. soalnya saya gak paham posisi DirExternal. tQ
itu di source code-nya sudah saya kasih keterangan mas.
ga bisa didownload bro
ini: MyLogin3
mas, boleh minta source code lengkap nya ? soalnya yang di atas ga bisa di click.
Itu mas udah saya share link-nya.
Komentar saya di atas yang MyLogin3.
Mau tanya gmn cara compile yg diikutsertakan dengan yg ada d folder files d aplikasi kita.krn disana ada gambar png yg harus diikutkan mksh
1. Pilih tab Files – Add Files. Ada di sebelah kanan bawah.
2. Pilih Files yang mau diikutsertakan. Klik Open.
3. Files yg nantinya ada di dalem APK-nya.
Atau bisa langsung copy files-nya ke folder Files. Lalu klik tombol Sync.
Kalau kita ingin menampilkan 1 field aja n 1 data aja kemudian ditampilkan di 1 edittext misal queey select noid from tabel a where nama =arief.noid ini ditampilkan di edittext itu caranya gmn makasih
Caranya sama seperti di atas, hanya saja pada saat menampilkan ListView datanya (Poin 9) harus pakai kondisi where “data yang ingin ditampilkan”.
Bgmn cara read blob mysql dengan rdc makasih
Wah, kalau itu saya belum pernah nyoba.
Public Sub BytesToImage(bytes() As Byte) As Bitmap
Dim In As InputStream
In.InitializeFromBytesArray(bytes, 0, bytes.Length)
Dim bmp As Bitmap
bmp.Initialize2(In)
Return bmp
End Sub
ini ada di dbrequestmanager penerapan ke rdcnya gimana ya,lagi utak utik negh kalau insertnya sprt ini
Dim cmd As DBCommand
Dim InputStream1 As InputStream
InputStream1 = File.OpenInput(dlgFileExpl.Selection.ChosenPath, dlgFileExpl.Selection.ChosenFile)
Dim OutputStream1 As OutputStream
OutputStream1.InitializeToBytesArray(1000)
File.Copy2(InputStream1, OutputStream1)
Dim Buffer() As Byte
Buffer = OutputStream1.ToBytesArray
cmd.Initialize
cmd.Name = “insert_foto”
cmd.Parameters = Array As Object(edtno, Edtimei.Text, 1,Buffer)
reqManager.ExecuteCommand(cmd, “insert_foto”)
mungkin bisa dibantu logikanya BytesToImage itu dalam penerapan ke RDCnya makasih
Alhamdulillah ini insert n read blob RDC mysql sudah ketemu.trima kasih sudah banyak membantu dalam pembelajaran basic4android mgkn hari ini akan saya share codingnya disini.smoga bermanfaat bagi para programmer yg lain
Keren! Sama-sama mas, saling share aja, biar bermanfaat buat lainnya. Terima kasih juga sudah sering berkunjung di sini 🙂
diatas untuk read blob RDC mysql
yang ini untuk insert blob
Thanks atas sharing-nya mas arief.
Syntax²-nya saya edit lagi, biar mudah dibaca.
Sep mas.makasih smoga bisa bermanfaat bagi yg lain
mas mau tanya kalau memakai RDC itu kita koneksikan ke WEBHOSTING gimana ya carang saya misal pakai webhosting idhostinger database disana cara koneksi nya gimana menggunakan RDC itu
Kalau tempat hosting kayak itu biasanya OS server-nya pakai linux (ubuntu, dll). Nah itu, saya belum pernah coba pakai linux 😀
Kalau OS server-nya pakai windows, caranya sama seperti postingan saya yang ini.
ribet jadinya mas kalau di pasang ke webhosting,kita buat servernya sendiri aja hahahahaah maksih banyak infonya
Dim RDCServer As String = “http://192.168.0.100:17178”
mas sya belum paham maslah hosting RDC, apakah alamat hosting itu kita masukakan pada tanda kutip diatas??
logikanya gmn mas???
solanya kalau coba di smartphone secara kita harus menjalankan RDC setiap kali uji coba!
mohon pencerahannya mas???
Gan arief boleh minta source code blop nya?
mohon maaf baru baca bisa minta emailnya,tapi saya kirim 2 smp 5 hari maaf krn codingnya ini saya buat untuk tempat kerja saya,saya rubah dulu codingnya
Maaf mas arief itu coding blob untuk db apa ya? Mysql bukan?
Klo untuk db mysql saya mau donk mas codingnya. Emailnya anyarshopmail@gmail.com
Terima kasih atas bantuannya
Insya Allah bro,ini saya lagi banyak kerjaan saya usahakan maksimal 5 hari ya,yup dengan mysql,trima kasih
Thanks mas arief atas supportnya
reminder
mas klo misalx tiap kita mau buka layout baru trus secara otomatis ngerefresh gimana mas caranya (untuk aplikasi non datasbase),,,
soalnya klo layoutx banyak pasti ada tulisanx “downsampling image due to lack of memory”
atau ada cara lain untuk mengatasinya mas???
mohon pencerahanx masih newbie hee
Ini nampilin image? Mungkin itu kegedan size image-nya, jadi butuh banyak memory. Saat buka activity-nya kemungkinan memory device-nya kurang, jadi gak bisa nampilin image. Bukan karena gak nge-refresh.
bang nanya dong , itu pas kita buat kode diatas , kita buat activity baru atau nerusin dibawahnya?
Perhatikan aja petunjuknya. Kalau gak ada perintah buat bikin activity baru atau pindah ke activity lain, ya dilanjutkan aja di bawahnya.
DBUtils.ExecuteListView(Main.SQL, query, Null, 0, LvData, True)
itu maksudnya pa ya om? bisa di jelasin
Itu untuk menampilkan data di ListView. Caranya dengan memanggil fungsi ExecuteListView yang ada di DBUtils. Untuk paramternya, ada Object SQL, query, dll). Lengkapnya, bisa dilihat saat mengetikkan fungsi tsb. Nanti akan muncul keterangan parameter-parameternya.
misal saya mau buat 4 tabel , berarti db utilsnya diganti sama listvviewnya diganti ya om?
misal querynya bgini om
query = ” Select denomasi , jumlah_lembar , total , keterangan , id FROM ” Main.remisTable
brarti dbutilsnya diganti om? maaf newbie om
softwarenya pake apa ya
software
[…] Membuat Aplikasi CRUD dengan Basic4Android […]
library yg d aktif kn itu apa aja om? sekalian link nya…
Dicek lagi aja om postingan atau komentar-komentarnya. Saya sudah share library yang diperlukan.
Assalamualaikum wr.wrb
gan pada contoh ditas, di setBojectView tu bisa gk kita tambahkan tombol sebelah kanan teks.
Misalnya :
PnlBarang.AddView(LlbKode, 20dip, ctop, 100%x-40dip)
PnlBarang.AddView(EdtKode, 20dip, ctop, 100%x-40dip)
nah saya mau tambahkan tombol di samping Edtkode tersebut.
Saya mengalami error gan.
mohon pencerahan kodingnya gan???
Wassalam,
koneksi mysql ke komputer lain gimana ya?