Wednesday 12 June 2019

Tutorial Belajar Android : Cara Membuat Login dan Register dengan Database SQLite di Android Studio


SQLite adalah database SQL opensource yang menyimpan data berupa file teks pada sebuah device. SQLite telah tersedia dari bawaan Sistem Operasi Android dan package utama nya adalah android.database.sqlite yang memuat class-class untuk mengelola database tersebut.

Seperti biasa langkah pertama yang kita lakukan adalah :
1. Buat project baru dengan meng klik Start a new Android Studio project.


2.  Pilih Empty Activity dan Next.


3.  Pada kolom Name isi dengan Register & Login SQLite atau boleh apa saja berdasarkan keinginan pembuat aplikasi. Pada bagian Minimum API level adalah sebagai batasan aplikasi yang akan dibuat nantinya akan berjalan dengan minimum level API (versi android) berapa. Dan setelah itu klik Finish.


4.  Buat file Class baru pada current package aplikasi kita dan pada kolom name berinama DatabaseHelper.


5.  Buat New Empty Activity pada current package aplikasi kita dan pada kolom Activity Name berinama RegisterActivity.


6.  Tambahkan Vector Asset dengan cara klik kanan drawable – New – Vector Asset


Setelah terbuka jendela Asset Studio klik icon Clip Art. Tuliskan account_circle pada kolom search dan click OK.


Pada kolom name ubah nama nya menjadi ic_account_circle dan ubah Color menjadi FFFFFF. Click Next dan Finish.


Setelah selesai, tambahkan lagi image vector dengan nama lock open di kolom search seperti langkah di atas. Jika dilihat maka susunan file xml pada drawable menjadi seperti ini.



7. Code DatabaseHelper.java

package com.example.registerloginsqlite;

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="corporate.db";
    public static final String TABLE_NAME="users";
    public static final String COL_1="id";
    public static final String COL_2="username";
    public static final String COL_3="password";

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT, password TEXT)");
    }

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

    public long addUser(String user, String password){

        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("username", user);
        contentValues.put("password", password);
        long res = db.insert(TABLE_NAME,null, contentValues);
        db.close();
        return res;
    }


    public boolean checkUser(String username, String password){

        String[] columns = { COL_1 };
        SQLiteDatabase db = getReadableDatabase();
        String selection = COL_2 + "=?" + " and " + COL_3 + "=?";
        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;

    }

}

8.  Code MainActivity.java

package com.example.registerloginsqlite;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    //LOGIN ACTIVITY
    EditText mTextUsername;
    EditText mTextPassword;
    Button mButtonLogin;
    TextView mTextViewRegister;
    DatabaseHelper db;

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

        db = new DatabaseHelper(this);
        mTextUsername = (EditText)findViewById(R.id.edit_textusername);
        mTextPassword= (EditText)findViewById(R.id.edit_textpassword);
        mButtonLogin = (Button) findViewById(R.id.button_login);
        mTextViewRegister = (TextView) findViewById(R.id.text_viewregister);

        mTextViewRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent registerIntent = new Intent(MainActivity.this, RegisterActivity.class);
                startActivity(registerIntent);

            }
        });

        mButtonLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String user = mTextUsername.getText().toString().trim();
                String pass = mTextPassword.getText().toString().trim();
                Boolean res = db.checkUser(user, pass);
                if(res == true){
                    Toast.makeText(MainActivity.this, "Successfully Logged in", Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(MainActivity.this, "Login Error", Toast.LENGTH_SHORT).show();
                }
            }
        });

    }
}

9. Code RegisterActivity.java

package com.example.registerloginsqlite;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
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 {

    //REGISTER ACTIVITY
    DatabaseHelper db;
    EditText mTextUsername;
    EditText mTextPassword;
    EditText mTextCnfPassword;
    Button mButtonRegister;
    TextView mTextViewLogin;

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

        db = new DatabaseHelper(this);
        mTextUsername = (EditText)findViewById(R.id.edit_textusername);
        mTextPassword= (EditText)findViewById(R.id.edit_textpassword);
        mTextCnfPassword= (EditText)findViewById(R.id.edit_textcnfpassword);
        mButtonRegister = (Button) findViewById(R.id.button_register);
        mTextViewLogin= (TextView) findViewById(R.id.text_viewlogin);

        mTextViewLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent LoginIntent = new Intent(RegisterActivity.this, MainActivity.class);
                startActivity(LoginIntent);
            }
        });

        mButtonRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String user = mTextUsername.getText().toString().trim();
                String pass = mTextPassword.getText().toString().trim();
                String cnf_pass = mTextCnfPassword.getText().toString().trim();

                if(pass.equals(cnf_pass)){
                    long val = db.addUser(user, pass);

                    if(val > 0){
                        Toast.makeText(RegisterActivity.this, "You have register", Toast.LENGTH_SHORT).show();
                        Intent moveToLogin = new Intent(RegisterActivity.this, MainActivity.class);
                        startActivity(moveToLogin);
                    }else{
                        Toast.makeText(RegisterActivity.this, "Registration Error", Toast.LENGTH_SHORT).show();
                    }


                }else{
                    Toast.makeText(RegisterActivity.this, "Password is not match", Toast.LENGTH_SHORT).show();
                }

            }
        });


    }
}

10.  Selanjut nya pada bagian res – layout – activity_main.xml , tuliskan code seperti ini

<?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:gravity="center_horizontal"
    android:orientation="vertical"
    android:background="#E71B62"
    tools:context=".MainActivity">

    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="50dp"
        android:layout_marginBottom="50dp"
        app:srcCompat="@drawable/ic_account_circle"/>

    <LinearLayout
        android:id="@+id/layoutInput"
        android:layout_marginTop="5dp"
        android:layout_marginRight="20dp"
        android:layout_marginLeft="20dp"
        android:orientation="vertical"
        android:layout_centerVertical="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <EditText
            android:id="@+id/edit_textusername"
            android:hint="Username"
            android:singleLine="true"
            android:maxLines="1"
            android:textColorHint="@color/colorWhite"
            android:textColor="@color/colorWhite"
            android:drawableLeft="@drawable/ic_account_circle"
            android:drawablePadding="10dp"
            android:paddingBottom="20dp"
            android:layout_marginBottom="15dp"
            android:backgroundTint="@color/colorWhite"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
        <EditText
            android:id="@+id/edit_textpassword"
            android:hint="Password"
            android:inputType="textPassword"
            android:singleLine="true"
            android:maxLines="1"
            android:textColorHint="@color/colorWhite"
            android:textColor="@color/colorWhite"
            android:drawableLeft="@drawable/ic_lock_open"
            android:drawablePadding="10dp"
            android:paddingBottom="20dp"
            android:layout_marginBottom="15dp"
            android:backgroundTint="@color/colorWhite"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <Button
            android:id="@+id/button_login"
            android:text="Sign In"
            android:layout_marginTop="30dp"
            android:textAllCaps="false"
            android:textStyle="bold"
            android:textColor="@color/colorWhite"
            android:background="#B90424"
            android:layout_marginRight="20dp"
            android:layout_marginLeft="20dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </LinearLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <Button
            android:id="@+id/text_viewregister"
            android:layout_marginRight="20dp"
            android:layout_marginLeft="20dp"
            android:background="@color/colorTrans"
            android:textAllCaps="false"
            android:textColor="@color/colorWhite"
            android:layout_alignParentBottom="true"
            android:text="Register Your Account"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </RelativeLayout>

</LinearLayout>


11.  Code activity_register.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:background="#5C40EC"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    tools:context=".RegisterActivity">


    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="30dp"
        android:layout_marginBottom="50dp"
        app:srcCompat="@drawable/ic_account_circle" />

    <LinearLayout
        android:id="@+id/layoutInput"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="5dp"
        android:layout_marginRight="20dp"
        android:orientation="vertical">

        <EditText
            android:id="@+id/edit_textusername"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="15dp"
            android:backgroundTint="@color/colorWhite"
            android:drawableLeft="@drawable/ic_account_circle"
            android:drawablePadding="10dp"
            android:hint="Username"
            android:maxLines="1"
            android:paddingBottom="20dp"
            android:singleLine="true"
            android:textColor="@color/colorWhite"
            android:textColorHint="@color/colorWhite" />

        <EditText
            android:id="@+id/edit_textpassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="15dp"
            android:backgroundTint="@color/colorWhite"
            android:drawableLeft="@drawable/ic_lock_open"
            android:drawablePadding="10dp"
            android:hint="New Password"
            android:inputType="textPassword"
            android:maxLines="1"
            android:paddingBottom="20dp"
            android:singleLine="true"
            android:textColor="@color/colorWhite"
            android:textColorHint="@color/colorWhite" />

        <EditText
            android:id="@+id/edit_textcnfpassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="15dp"
            android:backgroundTint="@color/colorWhite"
            android:drawableLeft="@drawable/ic_lock_open"
            android:drawablePadding="10dp"
            android:hint="Retype Password"
            android:inputType="textPassword"
            android:maxLines="1"
            android:paddingBottom="20dp"
            android:singleLine="true"
            android:textColor="@color/colorWhite"
            android:textColorHint="@color/colorWhite" />
    </LinearLayout>

    <Button
        android:id="@+id/button_register"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/layoutInput"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="30dp"
        android:layout_marginRight="20dp"
        android:background="#B90424"
        android:baselineAligned="false"
        android:text="Register"
        android:textAllCaps="false"
        android:textColor="@color/colorWhite"
        android:textStyle="bold" />


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="35dp"
            android:text="Already Registered"
            android:textColor="#eeeeee" />

        <TextView
            android:id="@+id/text_viewlogin"
            android:layout_width="wrap_content"
            android:layout_height="35dp"
            android:paddingLeft="10dp"
            android:text="LOGIN"
            android:textColor="#9E0505"
            android:textStyle="bold" />

    </LinearLayout>

</LinearLayout>

12.  Pada file colors.xml tambahkan code berikut
  <color name="colorWhite">#FFF</color>
    <color name="colorTrans">#00ffffff</color>

13.  Pada file style.xml tambahkan code berikut
 <style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    </style>

14.  Pada file androidManifest.xml  dibagian tag application , ubah android:theme menjadi
android:theme="@style/AppTheme.NoActionBar"






No comments:

Post a Comment