Coming Soon!

Segera hadir Ebook Tutorial Xamarin Form Berbahasa Indonesia !!

- Jumat, 16 Juni 2017

Tutorial Xamarin Android : Membuat Login dan Register dengan SQLite Part 2

Selamat pagi, pada kesemoatan kali ini saya akan melanjutkan tutorial pembuatan login dan register dengan SQL Lite yah. Agar tidak bingun mohon ikuti terlebih dahulu tutorial saya sebelumnya mengenai Tutorial Xamarin Android : Membuat Login dan Register dengan SQLite Part 1 

Step 5 
Setelah anda memastikan sudah menginstal komponen SQLite.Net pada solutions/project anda , anda bisa cek pada folder Components jika anda sudah melihat SQLite.net maka anda benar sudah menginstalnya.

Bisa kalian lihat, pada Components kita melihat sudah terinstalnya SQLite.NET ya, baik setelah ini maka kita membuat sebuah class yang akan membuat field-field pada SQLite.NET untuk menampung data yaitu id, username dan password. Class ini bisa dibuat dengan cara Klik Kanan pada Solutions -> Add New Files -> Pilih Class -> Namakan dengan LoginTable.cs kodenya adalah sebagai berikut :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using SQLite;

namespace LoginRegisterSqlLite
{
 public class LoginTable
 {
  [PrimaryKey, AutoIncrement, Column("_Id")]

  public int id { get; set; } // AutoIncrement and set primarykey  

  [MaxLength(25)]

  public string username { get; set; }

  [MaxLength(15)]

  public string password { get; set; }


  public LoginTable()
  {

  }


 }
}

Pada file LoginTable.cs bisa kalian lihat saya membuat 3 buah fungsi yaitu fungsi int id, string username dan string password dengan metode get set.GET dan SET merupakan suatu kata kunci untuk mengakses nilai properti dari kelas lain, GET digunakan untuk mendapatkan nilai dari properti yang berada dikelas lain sedangkan SET digunakan untuk mengisi nilai properti yang ada dikelas lain dengan nilai yang telah ditentukan. Biasanya SET dan GET selalu indentik penggunaanya dengan properti pada kelas, sehingga banyak yang mensalah artikan kalau SET dan GET adalah properti kelas, ini adalah pernyataan salah karena yang sebernarnya SET dan GET merupkan bagian dari properti kelas (Sumber).

Step 6
Langkah selanjutnya adalah membuat sebuah activity baru bernama RegisterActivity.cs, nah activity ini berperan sebagi activity yang didalamnya terdapat fungsi untuk menampung / memasukan nilai filed ke database SQLite.NET . Silahkan masukan buat Activity baru bernama RegisterActivity.cs dan masukan codenya sebagai berikut :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using SQLite;


namespace LoginRegisterSqlLite
{
 [Activity(Label = "RegisterActivity")]
 public class RegisterActivity : Activity
 {
  EditText txtusername;
  EditText txtPassword;
  Button btncreate;

  protected override void OnCreate(Bundle savedInstanceState)
  {
   base.OnCreate(savedInstanceState);
   SetContentView(Resource.Layout.Register);

   btncreate = FindViewById<Button>(Resource.Id.btnDaftar);
   txtusername = FindViewById<EditText>(Resource.Id.txtUsername);
   txtPassword = FindViewById<EditText>(Resource.Id.txtPassword);
   btncreate.Click += Btncreate_Click;

   // Create your application here
  }

  private void Btncreate_Click(object sender, EventArgs e)
  {
   try
   {
    string dpPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "user.db3");
    var db = new SQLiteConnection(dpPath);
    db.CreateTable<LoginTable>();
    LoginTable tbl = new LoginTable();
    tbl.username = txtusername.Text;
    tbl.password = txtPassword.Text;
    db.Insert(tbl);
    Toast.MakeText(this, "Record Added Successfully...,", ToastLength.Short).Show();
    StartActivity(typeof(MainActivity));
   }
   catch (Exception ex)
   {
    Toast.MakeText(this, ex.ToString(), ToastLength.Short).Show();
   }
  }
 }
}

Dapat kita lihat bahwa kita membuat 3 variable public yaitu txtusername, txtpassword dan btncreate, masing-masing variable tersebut kemudian memanggil id yang sudah kita sesuaikan pada layout Register.axml kita ya, jadi kalau kalian lupa bisa cek kembali file Register.axml nya.

Kemudian ada fungsi BtnCreate_Click yang mana fungsi ini berisi kita melakukan koneksi pada database SQLite.NET  kemudian menyimpan data field username dan passwordnya, database tersebut di namakan dengan user.db3 yang disimpan pada folder khusu yaitu Personal. Oleh karena itu kita wajib membuat folder baru di dalam folder resources dengan nama personal. Caranya mudah saja cukup Klik kanan pada folder resources -> Add New Folder  lalu rename dengan Personal.

Setelah data tersimpan dengan db.Insert(tbl) maka akan dilanjutkan diarahkan ke Activity utama yaitu MainActivity.

Step 7
Kita kemudian memodifikasi code pada MainActivity.cs sebagai berikut :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using SQLite;

namespace LoginRegisterSqlLite
{
 [Activity(Label = "LoginRegisterSqlLite", MainLauncher = true)]
 public class MainActivity : Activity
 {
  EditText txtusername;
  EditText txtPassword;
  Button btncreate;
  Button btnsign;

  protected override void OnCreate(Bundle savedInstanceState)
  {
   base.OnCreate(savedInstanceState);

   SetContentView(Resource.Layout.Main);

   btnsign = FindViewById<Button>(Resource.Id.btnLogin);
   btncreate = FindViewById<Button>(Resource.Id.btnDaftar);
   txtusername = FindViewById<EditText>(Resource.Id.txtUsername);
   txtPassword = FindViewById<EditText>(Resource.Id.txtPassword);
   btnsign.Click += Btnsign_Click;
   btncreate.Click += Btncreate_Click;
   CreateDB();
  }

  private void Btncreate_Click(object sender, EventArgs e)
  {
   StartActivity(typeof(RegisterActivity));
  }

  private void Btnsign_Click(object sender, EventArgs e)
  {
   try
   {
    string dpPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "user.db3"); //Call Database  
    var db = new SQLiteConnection(dpPath);
    var data = db.Table<LoginTable>(); //Call Table  
    var data1 = data.Where(x => x.username == txtusername.Text && x.password == txtPassword.Text).FirstOrDefault(); //Linq Query  
    if (data1 != null)
    {
     Toast.MakeText(this, "Login Success", ToastLength.Short).Show();
     StartActivity(typeof(HomeActivity));

    }
    else
    {
     Toast.MakeText(this, "Username or Password invalid", ToastLength.Short).Show();
     StartActivity(typeof(MainActivity));
    }
   }
   catch (Exception ex)
   {
    Toast.MakeText(this, ex.ToString(), ToastLength.Short).Show();
   }
  }
  public string CreateDB()
  {
   var output = "";
   output += "Creating Databse if it doesnt exists";
   string dpPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "user.db3"); //Create New Database  
   var db = new SQLiteConnection(dpPath);
   output += "n Database Created....";
   return output;
  }


 }
}

Perlu diingat bahwa , karena pertama kali activity yang dijalankan adalah MainActivity maka pastikan MainLauncer = True sedangkan diaktivity lain dibuat false agar tidak terjadi banyak icon launcer pada aplikasi anda.

Pada Btncreate_Click berfungsi agar jika kita klik button daftar akan di arahkan ke halaman Pendaftaran / Register.

Disitu juga terdapat fungsi CreateDB nah fungsi ini yang akan membuat atau mengecek database sudah dibuat atau belum.

Lalu ada fungsi Btnsign_Click berfungsi memanggil class LoginTable.cs lalu mengecek apakah data yang diinoutkan user untuk login sudah benar atau belum, Jika data benar dan ada maka akan diarahkan ke aktivity HomeActivity.cs yang akan membuka halaman Home.axml, sedangkan jika data tidak sama atau kosong maka akan diarahkan kehalaman Main.axml yaitu halaman user diminta login kembali.

Step 8
Membuat activity baru benama HomeActivity.cs yaitu activity yang akan dipanggil jika Login berhasil , HomeActivity.cs ini akan mengarahkan ke halaman Home.axml. Code HomeActivity.cs adalah sebagai berikut.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;

namespace LoginRegisterSqlLite
{
 [Activity(Label = "HomeActivity")]
 public class HomeActivity : Activity
 {
  protected override void OnCreate(Bundle savedInstanceState)
  {
   base.OnCreate(savedInstanceState);
   SetContentView(Resource.Layout.Home);

   // Create your application here
  }
 }
}

Bisa kita lihat bahwa di sana terdapat SetContentView() yang mengarahkan ke Layout Home.

Terimakasih

Ipung Purwono
https://www.facebook.com/ipungz.purwono