Pages

Login Session Menggunakan SQLite Android

Sabtu, 12 Desember 2015


Assalamualaikum Wr.Wb~



Apa itu Login Session? Kalian pernah menggunakan Aplikasi Facebook yang ada di android? Atau mungkin Instagram? Ya seperti itulah kira-kira, jadi ketika kita login dan keluar dari aplikasi tanpa logout, kemudian kita ingin masuk aplikasi lagi, kita tidak perlu memasukan username dan password untuk login lagi. Intinya kita tidak perlu login berulang kali saat keluar masuk aplikasi, kecuali saat kita logout.




Nah sekarang kita ingin belajar bagaimana cara membuatnya, pertama kita buat file-file yang kita butuhkan, seperti ini
DatabaseHelper.java 
Class ini berisi perintah untuk menjalankan query seperti Create Table, Insert Data, Delete Data dan sebagainya ke Database SQLite. 
LoginActivity.java 

Class ini berisi perintah untuk login untuk masuk ke MainActivity dan cek session yang ada dalam database. 

MainActivity.java 

Class ini hanya berisi tombol logout, yang nantinya akan menghapus session, yang mengharuskan kita untuk login lagi. 

activity_login.xml 
layout dari LoginActivity 

activity_main.xml
layout dari MainActivity


  1. activity_login.xml
<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editTextUsername"
        android:layout_gravity="center_horizontal"
        android:hint="Username" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
        android:ems="10"
        android:id="@+id/editTextPassword"
        android:layout_gravity="center_horizontal"
        android:hint="Password" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Login"
        android:id="@+id/buttonLogin"
        android:layout_gravity="right" />
</LinearLayout>

  1. activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Logout"
        android:id="@+id/buttonLogout"
        android:layout_gravity="right" />
</LinearLayout>

  1. DatabaseHelper.java

  • SimpanData(String Username, String Password)
    Method inilah yang nantinya akan dipanggil di LoginActivity.java untuk menyimpan data username dan password yang login.
  • LihatData()
    Method ini berfungsi untuk melihat data yang ada di database.
  • HapusData()
    Method ini berfungsi untuk mengahpus semua data yang ada di database. Method inilah yang akan dipanggil ketika kita logout.

package azisuazusa.loginsession;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
    public static final String DATABASE_NAME = "DB_Login";
    public static final String TABLE_NAME = "TB_Login";
    public static final String COL_1 = "Username";
    public static final String COL_2 = "Password";
    private SQLiteDatabase db;
    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
        db = this.getWritableDatabase();
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table " + TABLE_NAME + " (Username STRING PRIMARY KEY, Password TEXT)");
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);
    }
    public void SimpanData(String Username, String Password) {
        ContentValues values = new ContentValues();
        values.put(COL_1, Username);
        values.put(COL_2, Password);
        db.insert(TABLE_NAME, null, values);
    }
    public Cursor LihatData() {
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor res = db.rawQuery("Select * from " + TABLE_NAME, null);
        return res;
    }
    public void HapusData() {
        SQLiteDatabase db = this.getWritableDatabase();
        db.execSQL("delete from " + TABLE_NAME);
    }
}

  1. LoginActivity.java
    Disini untuk login kita tidak memakan database apapun, kita hanya menggunakan variable string yang berisi Username dan Password.

  • if(res.moveToNext())
    Kode ini berfungsi untuk memeriksa, apakah di dalam database ada data user yang telah login. Jika ada maka LoginActivity.java akan ditutup dan langsung masuk ke MainActivity.
  • Login()
    Method ini berisi perintah untuk login, dan di dalamnya ada MyDB.SimpanData(User, Pass); yang berfungsi untuk menyimpan data Username dan Password yang sedang login.

package azisuazusa.loginsession;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class LoginActivity extends Activity {
    Button btnLogin;
    EditText etUsername, etPassword;
    String Username = "azisu", Password = "azusa";
    DatabaseHelper MyDB;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        MyDB = new DatabaseHelper(this);
        Cursor res = MyDB.LihatData();
        if(res.moveToNext()){
            finish();
            Intent intent = new Intent(this, MainActivity.class);
            startActivity(intent);
        }
        etUsername = (EditText) findViewById(R.id.editTextUsername);
        etPassword = (EditText) findViewById(R.id.editTextPassword);
        btnLogin = (Button) findViewById(R.id.buttonLogin);
        btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Login();
            }
        });
    }
    private void Login(){
        String User = etUsername.getText().toString();
        String Pass = etPassword.getText().toString();
        if(User.equals("") || Pass.equals("")){
            Toast.makeText(this, "Form Masih Kosong!", Toast.LENGTH_SHORT).show();
        }else{
            if(!User.equals(Username) || !Pass.equals(Password)){
                Toast.makeText(this, "Username atau Password Salah!", Toast.LENGTH_SHORT).show();
            }else {
                Toast.makeText(this, "Berhasil Login!", Toast.LENGTH_SHORT).show();
                MyDB.SimpanData(User, Pass);
                finish();
                Intent intent = new Intent(this, MainActivity.class);
                startActivity(intent);
            }
        }
    }
}

  1. MainActivity.java

  • MyDB.HapusData();
    Kode inilah yang berfungsi untuk menghapus semua data yang ada di database.
package azisuazusa.loginsession;
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
    Button btnLogout;
    DatabaseHelper MyDB;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MyDB = new DatabaseHelper(this);
        btnLogout = (Button) findViewById(R.id.buttonLogout);
        btnLogout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MyDB.HapusData();
                finish();
                Intent intent = new Intent(MainActivity.this, LoginActivity.class);
                startActivity(intent);
            }
        });
    }
}

  1. AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="azisuazusa.loginsession">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".LoginActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".MainActivity"></activity>
    </application>
</manifest> 
 
Sekarang silahkan coba jalankan! Sekian, semoga bermanfaat. Wassalamualaikum Wr. Wb~