Membuat Aplikasi Login Menggunakan SQLite Database

 Oke langsung saja kita praktekan membuat login android menggunakan SQLite Database.

1. Buat Project Baru

Langkah pertama silahkan buat project baru (Empty Project) di android studio dengan menggunakan nama project VSGALOGIN

 

2. Library Material Design

Tambahkan library material design dengan cara klik gradle (module:app) > masukan 1 baris kode berikut pada dependencies > klik sync now (pastikan terknoneksi dengan internet )

implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:26.1.0'

3. Edit Color

Edit warna yang dengan cara buka res > values > colors.xml.

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
<color name="colorPrimary">#607d8b</color>
<color name="colorPrimaryDark">#455a64</color>
<color name="colorAccent">#0c0099</color>

</resources>

 

4. Edit String

Edit string yang nantinya digunakan untuk nama aplikasi dan beberapa komponen widget. Buka res > values > string.xml. disini Kamu bisa pelajari struktur folder android .

<resources>
<string name="app_name">VSGA LOGIN</string>
<string name="create_account"><font color="#00ff00">text</font></string>
<string name="email">Email</string>
<string name="password">Password</string>
<string name="login">Login</string>
<string name="username">Username</string>
<string name="register">Register</string>
<string name="back_to_login">Back to Login</string>

</resources>

 

5. Edit Style

Edit tema pada res > values > styles.xml. Dalam aplikasi yang akan kita buat ini kita tidak akan menampilkan action bar (app bar). Sehingga kode-kodenya kita edit menjadi seperti seperti berikut.

<?xml version="1.0" encoding="utf-8"?>
<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>

<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

</resources>

6. Drawable

Copykan gambar/ icon pendukung dengan caranya mencopy file gambar/ icon yang ingin digunakan, kemudian kembali ke aplikasi android studio klik kanan pada drawable > klik paste. 

7. Activity Login

Buat activity login dengan cara klik folder java > klik kanan nama package > New > Activity > Empty Activity > Isikan Nama LoginActivity. Sehingga akan terdapat class java LoginActivity.java dan layout activity_login.xml.

Masukan kode-kode berikut dibawah nama package.

 LoginActivity.java

import android.content.Intent;
import android.database.Cursor;
import android.os.Build;
import android.text.Html;
import android.text.Spanned;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class LoginActivity extends AppCompatActivity {
//Declarasi
EditText TxUsername, TxPassword;
Button BtnLogin;
DBHelper dbHelper;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);

TxUsername = (EditText)findViewById(R.id.txUsername);
TxPassword = (EditText)findViewById(R.id.txPassword);
BtnLogin = (Button)findViewById(R.id.btnLogin);

dbHelper = new DBHelper(this);

TextView tvCreateAccount = (TextView)findViewById(R.id.tvCreateAccount);

//intent ke Register activity untuk membuat akun
tvCreateAccount.setText(fromHtml("Belum punya akun? " +
"</font><font color='#3b5998'>Buat Akun Disini</font>"));
tvCreateAccount.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(LoginActivity.this, RegisterActivity.class));
}
});

// Method Login
BtnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String username = TxUsername.getText().toString().trim();
String password = TxPassword.getText().toString().trim();

Boolean res = dbHelper.checkUser(username,password);
if(res == true){
Toast.makeText(LoginActivity.this, "Login Successful", Toast.LENGTH_SHORT).show();
startActivity(new Intent(LoginActivity.this, MainActivity.class));
}else {
Toast.makeText(LoginActivity.this, "Login Failed", Toast.LENGTH_SHORT).show();
}
}
});
}
// HTML spanned
public static Spanned fromHtml(String html){
Spanned result;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
result = Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY);
}else {
result = Html.fromHtml(html);
}
return result;
}
}

 

7. Activity Login

Buat activity login dengan cara klik folder java > klik kanan nama package > New > Activity > Empty Activity > Isikan Nama LoginActivity. Sehingga akan terdapat class java LoginActivity.java dan layout activity_login.xml.

Masukan kode-kode berikut dibawah nama package.

LoginActivity.java

 

import android.content.Intent;
import android.database.Cursor;
import android.os.Build;
import android.text.Html;
import android.text.Spanned;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class LoginActivity extends AppCompatActivity {
//Declarasi
EditText TxUsername, TxPassword;
Button BtnLogin;
DBHelper dbHelper;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);

TxUsername = (EditText)findViewById(R.id.txUsername);
TxPassword = (EditText)findViewById(R.id.txPassword);
BtnLogin = (Button)findViewById(R.id.btnLogin);

dbHelper = new DBHelper(this);

TextView tvCreateAccount = (TextView)findViewById(R.id.tvCreateAccount);

//intent ke Register activity untuk membuat akun
tvCreateAccount.setText(fromHtml("Belum punya akun? " +
"</font><font color='#3b5998'>Buat Akun Disini</font>"));
tvCreateAccount.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(LoginActivity.this, RegisterActivity.class));
}
});

// Method Login
BtnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String username = TxUsername.getText().toString().trim();
String password = TxPassword.getText().toString().trim();

Boolean res = dbHelper.checkUser(username,password);
if(res == true){
Toast.makeText(LoginActivity.this, "Login Successful", Toast.LENGTH_SHORT).show();
startActivity(new Intent(LoginActivity.this, MainActivity.class));
}else {
Toast.makeText(LoginActivity.this, "Login Failed", Toast.LENGTH_SHORT).show();
}
}
});
}
// HTML spanned
public static Spanned fromHtml(String html){
Spanned result;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
result = Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY);
}else {
result = Html.fromHtml(html);
}
return result;
}
}

8. Activity Register

Buat activity register dengan cara klik java > klik kanan nama package > New > Activity > Empty Activity > Isikan Nama RegisterActivity. Sehingga akan terdapat class java RegisterActivity.java dan layout activity_register.xml.

Untuk kode-kode RegisterActivity.java (tempatkan dibawah nama package) adalah :

RegisterActivity.java


import android.content.ContentValues;
import android.content.Intent;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Html;
import android.text.Spanned;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class RegisterActivity extends AppCompatActivity {

EditText TxUsername, TxPassword, TxConPassword;
Button BtnRegister;
DBHelper dbHelper;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);

dbHelper = new DBHelper(this);

TxUsername = (EditText)findViewById(R.id.txUsernameReg);
TxPassword = (EditText)findViewById(R.id.txPasswordReg);
TxConPassword = (EditText)findViewById(R.id.txConPassword);
BtnRegister = (Button)findViewById(R.id.btnRegister);

TextView tvRegister = (TextView)findViewById(R.id.tvRegister);

tvRegister.setText(fromHtml("Back to " +
"</font><font color='#3b5998'>Login</font>"));

tvRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(RegisterActivity.this, LoginActivity.class));
}
});

BtnRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String username = TxUsername.getText().toString().trim();
String password = TxPassword.getText().toString().trim();
String conPassword = TxConPassword.getText().toString().trim();

ContentValues values = new ContentValues();


if (!password.equals(conPassword)){
Toast.makeText(RegisterActivity.this, "Password not match", Toast.LENGTH_SHORT).show();
}else if (password.equals("") || username.equals("")){
Toast.makeText(RegisterActivity.this, "Username or Password cannot be empty", Toast.LENGTH_SHORT).show();
}else {
values.put(DBHelper.row_username, username);
values.put(DBHelper.row_password, password);
dbHelper.insertData(values);

Toast.makeText(RegisterActivity.this, "Register successful", Toast.LENGTH_SHORT).show();
finish();
}
}
});


}

public static Spanned fromHtml(String html){
Spanned result;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
result = Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY);
}else {
result = Html.fromHtml(html);
}
return result;
}
}


9. Class DBHelper

Tambahkan class DBHelper. Untuk membuatnya silahkan klik folder java > klik kanan pada nama package > pilih new > class > beri nama class DBHelper. Masukan kode-kode berikut ini pada DBHelper.java (tempatkan dibawah nama package).

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBHelper extends SQLiteOpenHelper {

public static final String database_name = "db_login";
public static final String table_name = "table_login";

public static final String row_id = "_id";
public static final String row_username = "Username";
public static final String row_password = "Password";

private SQLiteDatabase db;

public DBHelper(Context context) {
super(context, database_name, null, 2);
db = getWritableDatabase();
}

@Override
public void onCreate(SQLiteDatabase db) {
String query = "CREATE TABLE " + table_name + "(" + row_id + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ row_username + " TEXT," + row_password + " TEXT)";
db.execSQL(query);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + table_name);
}

//Insert Data
public void insertData(ContentValues values){
db.insert(table_name, null, values);
}


public boolean checkUser(String username, String password){
String[] columns = {row_id};
SQLiteDatabase db = getReadableDatabase();
String selection = row_username + "=?" + " and " + row_password + "=?";
String[] selectionArgs = {username,password};
Cursor cursor = db.query(table_name, columns, selection, selectionArgs, null, null, null);
int count = cursor.getCount();
cursor.close();
db.close();

if (count>0)
return true;
else
return false;
}
}

 

Di dalam Class DBHelper merupakan bagian dari SQLiteOpenHelper di dalamnya terdapat:

Nama database

Versi database

Tabel

Kolom

 

10. Class User

Tambahkan class User yang akan dijadikan model dari user.  Untuk membuatnya sama seperti point 8, lalu beri nama class User. 

Tambahkan kode-kode dibawah ini pada User.java.

public class User {
public String id;
public String userName;
public String email;
public String password;

public User(String id, String userName, String email, String password) {
this.id = id;
this.userName = userName;
this.email = email;
this.password = password;
}

}

 

 11. Home Screen

Jika login berhasil maka aplikasi akan menampilkan home screen. Home screen yang kita buat kali ini hanya menampilkan komponen TextView.Tambahkan kode-kode dibawah ini pada activity_main.xml. 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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:orientation="vertical"
android:gravity="center"
tools:context=".MainActivity">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Login Successfully"
android:textStyle="bold"
android:textSize="25sp"/>
</LinearLayout>

 


 

12. Android Manifest

Buka AndroidManifest.xml yang ada pada folder app > manifest. Edit kode-kodenya sehingga menjadi seperti dibawah ini(pakcagenya sesuaikan dengan nama package yang kamu buat).

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.wunix.vsgalogin">

<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/Theme.VSGALOGIN">
<activity
android:name=".MainActivity"
android:exported="true" />
<activity
android:name=".RegisterActivity"
android:exported="true" />
<activity
android:name=".LoginActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

 

13. Menjalankan Project 

Kita bisa menjalankan aplikasi menggunkana Real Device (HP Kita) atau dengan Emulator.




 

14. Untuk Melihat username dan password yang telah dibuat pada Database tersebut kita bisa mengeksport database dan menggunakan DB Browser SQLite untuk membuka file Database tersebut.


Posting Komentar

Please Select Embedded Mode To Show The Comment System.*

Lebih baru Lebih lama