SQLITE DATABASE
Ada beberapa aplikasi Android yang membutuhkan authentikasi sebelum masuk ke halaman
utama. Authentikasi berguna untuk mengenali siapa yang akan menggunakan aplikasi serta apa
saja hak aksesnya. Apa saja contohnya?, aplikasi mobile banking, inventory, bahkan aplikasi
tagihan internet juga perlu authentikasi login untuk mengenali pemakainya.
Isilah kolom Application Name dan Company Domain lalu klik tombol Next untuk melanjutkan
proses ke pilihan Target Device.
Modul Database SQLite | Pemrograman Aplikasi Mobile| JTD | David Bayu F, S.Kom., M.Kom
Persiapkan Resource String, Dimens, dan Colors
File - file resource berada di dalam folder app -> src -> main ->res ->values.
Color.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="colorRed">#e13d5f</color>
<color name="colorGrey">#ebebeb</color>
<color name="colorWhite">#ffffff</color>
<color name="alertPrimary">#cce5ff</color>
<color name="alertPrimaryFontColor">#004085</color>
<color name="alertSuccess">#d4edda</color>
<color name="alertSuccessFontColor">#155724</color>
<color name="alertDanger">#f8d7da</color>
<color name="alertDangerFontColor">#721c24</color>
<color name="alertWarning">#fff3cd</color>
<color name="alertWarningFontColor">#856404</color>
<color name="alertInfo">#d1ecf1</color>
<color name="alertInfoFontColor">#0c5460</color>
Modul Database SQLite | Pemrograman Aplikasi Mobile| JTD | David Bayu F, S.Kom., M.Kom
<color name="alertSecondary">#e2e3e5</color>
<color name="alertSecondaryFontColor">#383d41</color>
<color name="btnPrimary">#007bff</color>
<color name="btnSecondary">#6c757d</color>
<color name="btnSuccess">#28a745</color>
<color name="btnDanger">#dc3545</color>
<color name="btnWarning">#ffc107</color>
<color name="btnInfo">#17a2b8</color>
</resources>
Strings.xml
<resources>
<string name="app_name">Tutorial Login Sederhana</string>
<string name="prompt_email">Email</string>
<string name="prompt_password">Password</string>
<string name="prompt_password_repeat">Password (Diulang)</string>
<string name="prompt_name">Nama Lengkap</string>
<string name="prompt_phone">Nomor Telepon</string>
<string name="action_sign_in">Masuk atau Mendaftar</string>
<string name="action_sign_in_short">Masuk</string>
<string name="action_register">Buat akun baru?</string>
<string name="action_have_account">Sudah memiliki akun?</string>
<string name="action_submit">Kirim</string>
<string name="error_invalid_email">Alamat email tidak
valid</string>
<string name="error_unavailable_email">Email sudah pernah
terdaftar</string>
<string name="error_invalid_password">Password tidak valid</string>
<string name="error_invalid_password_repeat">Ulangi password dengan
benar</string>
<string name="error_incorrect_password">Password yang Anda masukkan
salah</string>
<string name="error_old_password">Password lama salah</string>
<string name="error_field_required">Kolom ini tidak boleh
dikosongi</string>
<string name="permission_rationale">"Izin kontak diperlukan untuk
menyediakan penyelesaian email."</string>
<string name="login_header_information">Isilah form ini dengan akun
login anda,
atau buat akun terlebih dahulu untuk dapat menggunakan aplikasi
ini.</string>
<string name="btn_logout">Logout</string>
</resources>
Tambahkan 1 file resource dalam folder yang sama dengan file di atas dengan nama file dimens.xml
untuk menampung varible dimensi atau ukuran margin, padding, dan lain - lain.
Modul Database SQLite | Pemrograman Aplikasi Mobile| JTD | David Bayu F, S.Kom., M.Kom
Dimens.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
</resources>
Database.java || Class Database berisi default method untuk membaca, menyimpan, mengubah,
dan menghapus data.
package com.slightsite.tutorialloginsederhana.utils;
import java.util.List;
/**
* Selects something in database.
* @param queryString query string for select in database.
* @return list of object.
*/
public List<Object> select(String queryString);
Modul Database SQLite | Pemrograman Aplikasi Mobile| JTD | David Bayu F, S.Kom., M.Kom
/**
* Inserts something in database.
* @param tableName name of table in database.
* @param content string for using in database.
* @return id of row data.
*/
public int insert(String tableName, Object content);
/**
* Updates something in database.
* @param tableName name of table in database.
* @param content string for using in database.
* @return true if updates success ; otherwise false.
*/
boolean update(String tableName, Object content);
/**
* Deletes something in database.
* @param tableName name of table in database.
* @param id a specific id of row data for deletion.
* @return true if deletion success ; otherwise false.
*/
boolean delete(String tableName, int id);
/**
* Directly execute to database.
* @param queryString query string for execute.
* @return true if executes success ; otherwise false.
*/
boolean execute(String queryString);
}
DATABASE("loginsederhana.db"),
TABLE_USERS("tbl_users");
/**
* Constructs DatabaseContents.
* @param name name of this content for using in database.
*/
private DatabaseContents(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
}
Modul Database SQLite | Pemrograman Aplikasi Mobile| JTD | David Bayu F, S.Kom., M.Kom
DatabaseHelper.java || DatabaseHelper inilah yang akan selalu dipanggil untuk berinteraksi dengan
tabel tertentu di dalam database baik untuk mengambil data, membuat data baru, mengubah, serta
menghapus data.
package com.slightsite.tutorialloginsederhana.utils;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME =
DatabaseContents.DATABASE.toString();
// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int
newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + DatabaseContents.TABLE_USERS);
@Override
public List<Object> select(String queryString) {
Modul Database SQLite | Pemrograman Aplikasi Mobile| JTD | David Bayu F, S.Kom., M.Kom
try {
SQLiteDatabase database = this.getWritableDatabase();
List<Object> list = new ArrayList<Object>();
Cursor cursor = database.rawQuery(queryString, null);
if (cursor != null) {
if (cursor.moveToFirst()) {
do {
ContentValues content = new ContentValues();
String[] columnNames = cursor.getColumnNames();
for (String columnName : columnNames) {
content.put(columnName, cursor.getString(cursor
.getColumnIndex(columnName)));
}
list.add(content);
} while (cursor.moveToNext());
}
}
cursor.close();
database.close();
return list;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
public int insert(String tableName, Object content) {
try {
SQLiteDatabase database = this.getWritableDatabase();
database.close();
return id;
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
@Override
public boolean update(String tableName, Object content) {
try {
SQLiteDatabase database = this.getWritableDatabase();
ContentValues cont = (ContentValues) content;
// this array will always contains only one element.
String[] array = new String[]{cont.get("_id")+""};
database.update(tableName, cont, " _id = ?", array);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
@Override
Modul Database SQLite | Pemrograman Aplikasi Mobile| JTD | David Bayu F, S.Kom., M.Kom
public boolean delete(String tableName, int id) {
try {
SQLiteDatabase database = this.getWritableDatabase();
database.delete(tableName, " _id = ?", new String[]{id+""});
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
@Override
public boolean execute(String queryString) {
try{
SQLiteDatabase database = this.getWritableDatabase();
database.execSQL(queryString);
return true;
}catch(Exception e){
e.printStackTrace();
return false;
}
}
}
Gunakan prosedur yang sama dengan membuat class untuk database di atas. Buat folder atau
package baru dengan nama "controllers" di dalam folder app -> src -> main -> java -> com
-> slightsite -> tutorialloginsederhana dan ciptakan class baru dengan nama
"UserControlle r" di file UserController.java.
Modul Database SQLite | Pemrograman Aplikasi Mobile| JTD | David Bayu F, S.Kom., M.Kom
UserController.java
package com.slightsite.tutorialloginsederhana.controllers;
import android.content.ContentValues;
import com.slightsite.tutorialloginsederhana.utils.Database;
import com.slightsite.tutorialloginsederhana.utils.DatabaseContents;
import java.util.List;
private UserController() {}
return instance;
}
/**
* Sets database for use in this class.
* @param db database.
*/
public static void setDatabase(Database db) {
database = db;
}
if (contents.isEmpty()) {
return null;
}
Modul Database SQLite | Pemrograman Aplikasi Mobile| JTD | David Bayu F, S.Kom., M.Kom
ContentValues content = (ContentValues) contents.get(0);
return content;
}
return contents;
}
return id;
}
return update;
}
}
Modul Database SQLite | Pemrograman Aplikasi Mobile| JTD | David Bayu F, S.Kom., M.Kom
Buat juga file activity_login.xml di folder res -> layout. Cara lainnya yang lebih mudah agar
file LoginActivity.java dan activity_login.xml tergenerate secara otomatis adalah dengan klik
kanan folder com.slightsite.tutorialloginsederhana di dalam folder java lalu pilih New ->
Activity -> Basic Activity . Jika berhasil, maka akan ada 2 file baru di dalam folder berikut :
Pastikan LoginActivity sudah terdefinisi di file AndroidManifest.xml agar activity ini dapat
digunakan. Letak file tersebut ada di folder app -> src -> main. Jadikan LoginActivity sebagai
main intent agar activity ini di eksekusi pertama kali saat aplikasi dibuka.
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.slightsite.tutorialloginsederhana">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
Modul Database SQLite | Pemrograman Aplikasi Mobile| JTD | David Bayu F, S.Kom., M.Kom
android:name=".LoginActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main"
android:screenOrientation="portrait" />
</application>
</manifest>
Modul Database SQLite | Pemrograman Aplikasi Mobile| JTD | David Bayu F, S.Kom., M.Kom