Pada kesempatan kali ini saya akan memberikan tutorial tentang cara membuat aplikasi CRUD dengan Android Studio (Java). Disini saya menggunakan SQLite untuk database manager-nya. Tutorial ini akan saya bagi menjadi 5 bagian, yaitu bagian persiapan, bagian create, bagian read, bagian update, dan bagian delete.
Tahap Pembuatan
-
Untuk langkah pertamanya silakan untuk membuat project baru terlebih dahulu.
-
Setelah itu kita buat tiga package, yaitu model, view, dan controller.
-
Kemudian pindahkan class "MainActivity" ke bagian view.
-
Lalu kita buat class baru bernama "Book" dan simpan di package model, dengan isian berikut :
package com.herdaynote.simplecrud.model; public class Book { private long bookId; private String bookName; private String bookAuthor; public Book() { } public void setBookId(long bookId) { this.bookId = bookId; } public long getBookId() { return bookId; } public void setBookName(String bookName) { this.bookName = bookName; } public String getBookName() { return bookName; } public void setBookAuthor(String bookAuthor) { this.bookAuthor = bookAuthor; } public String getBookAuthor() { return bookAuthor; } public String toString() { return bookName + " by " + bookAuthor; } }
-
Setelah itu kita buat class baru bernama "DBHelper" dan simpan di package model, dengan isian berikut :
package com.herdaynote.simplecrud.model; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBHelper extends SQLiteOpenHelper { public static final String tableName = "books"; public static final String columnId = "book_id"; public static final String columnName = "book_name"; public static final String columnAuthor = "book_author"; private static final String db_name = "books.db"; private static final String db_create = "CREATE TABLE " + tableName + "(" + columnId + " INTEGER PRIMARY KEY AUTOINCREMENT, " + columnName + " VARCHAR(100) NOT NULL, " + columnAuthor + " VARCHAR(100) NOT NULL" + ")"; public DBHelper(Context context) { super(context, db_name, null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(db_create); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + tableName); } }
-
Kemudian kita buat class baru bernama "DBDataSource" dan simpan di package controller, dengan isian berikut :
package com.herdaynote.simplecrud.controller; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import com.herdaynote.simplecrud.model.Book; import com.herdaynote.simplecrud.model.DBHelper; import java.util.ArrayList; public class DBDataSource { private SQLiteDatabase database; private final DBHelper dbHelper; private final String[] allColumns = { DBHelper.columnId, DBHelper.columnName, DBHelper.columnAuthor }; private Cursor cursor; public DBDataSource(Context context) { dbHelper = new DBHelper(context); } public void open() throws SQLException { database = dbHelper.getWritableDatabase(); } private Book cursorToBook(Cursor cursor) { Book book = new Book(); book.setBookId(cursor.getLong(0)); book.setBookName(cursor.getString(1)); book.setBookAuthor(cursor.getString(2)); return book; } }
-
Setelah itu kita modifikasi layout "activity_main.xml" dengan isian berikut :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" tools:context=".view.MainActivity"> <TextView android:id="@+id/title_app" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/app_name" android:gravity="center" android:textSize="42sp" android:layout_marginBottom="10dp"/> <Button android:id="@+id/btnCreate" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/title_app" android:text="@string/createText" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:textSize="20sp" android:padding="10dp" android:layout_marginBottom="10dp"/> <Button android:id="@+id/btnRead" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/btnCreate" android:text="@string/readText" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:textSize="20sp" android:padding="10dp" android:layout_marginBottom="10dp"/> <Button android:id="@+id/btnUpdate" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/btnRead" android:text="@string/updateText" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:textSize="20sp" android:padding="10dp" android:layout_marginBottom="10dp"/> <Button android:id="@+id/btnDelete" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/btnUpdate" android:text="@string/deleteText" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:textSize="20sp" android:padding="10dp"/> </RelativeLayout>
-
Lalu kita modifikasi class "MainActivity" ke dalam package view dengan isian berikut :
package com.herdaynote.simplecrud.view; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import com.herdaynote.simplecrud.R; import com.herdaynote.simplecrud.view.create.CreateData; import com.herdaynote.simplecrud.view.delete.DeleteData; import com.herdaynote.simplecrud.view.read.ReadData; import com.herdaynote.simplecrud.view.update.ListUpdate; public class MainActivity extends Activity implements OnClickListener { private Button btnCreate, btnRead, btnUpdate, btnDelete; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnCreate = findViewById(R.id.btnCreate); btnCreate.setOnClickListener(this); btnRead = findViewById(R.id.btnRead); btnRead.setOnClickListener(this); btnUpdate = findViewById(R.id.btnUpdate); btnUpdate.setOnClickListener(this); btnDelete = findViewById(R.id.btnDelete); btnDelete.setOnClickListener(this); } @SuppressLint("NonConstantResourceId") public void onClick(View v) { switch (v.getId()) { case R.id.btnCreate : // start create activity break; case R.id.btnRead : // start read activity break; case R.id.btnUpdate : // start update activity break; case R.id.btnDelete : // start delete activity break; } } }
-
Setelah itu ubah seluruh kode yang ada di "strings.xml" yang berada di ".../res/values/strings.xml", dengan kode berikut.
<resources> <string name="app_name">SimpleCRUD</string> <string name="createText">Create Data</string> <string name="readText">Read Data</string> <string name="updateText">Update Data</string> <string name="deleteText">Delete Data</string> <string name="book_name">Book Name</string> <string name="book_author">Book Author</string> </resources>
Tutorial Video
Source Code : Github
Tags:
tutorial