Modul 5
Modul 5
Pendahuluan
Pada modul ini akan dibahas bagaimana bekerja dengan media penyimpanan lokal berupa database
yaitu SQL Lite untuk menyimpan persistance data pada perangkat Android. Modul ini juga akan
membahas bagaimana cara untuk bekerja dengan REST Services pada aplikasi backend.
Pada subbab berikut akan dibahas bagaimana cara untuk menyimpan data secara lokal menggunakan
database SQLite. Contoh aplikasi yang akan dibuat adalah aplikasi untuk menyimpan dan memanipulasi
data Pegawai.
4. Pada project portable SampleSQLite tambahkan kode c# berikut untuk membuat objek interface yang
digunakan untuk membuat method koneksi.
using SQLite.Net;
namespace SampleSQLite
{
public interface ISQLIte
{
SQLiteConnection GetConnection();
}
}
5. Pada project Droid, buat class dengan nama SqliteService.cs dan tambahkan kode berikut untuk membuat
db sqlite baru:
using System;
using Xamarin.Forms;
using SampleSQLite.Droid;
using System.IO;
using SampleSQLite;
[assembly: Dependency(typeof(SqliteService))]
namespace SampleSQLite.Droid
{
public class SqliteService : ISQLIte
{
public SqliteService() { }
public SQLite.Net.SQLiteConnection GetConnection()
{
var sqliteFilename = "Pegawai.db3";
string documentsPath =
Environment.GetFolderPath(Environment.SpecialFolder.Personal);
var path = Path.Combine(documentsPath, sqliteFilename);
Console.WriteLine(path);
if (!File.Exists(path)) File.Create(path);
var plat = new SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid();
var conn = new SQLite.Net.SQLiteConnection(plat, path);
return conn;
}
}
}
6. Pada kode diatas kita akan membuat file database lokal dengan nama Pegawai.db3. File database tersebut
akan disimpan kedalam folder pada device android anda yaitu pada folder
/data/data/[your.package.name]/files.
7. Pada project portable tambahkan class dengan nama Employee.cs yang akan digunakan untuk menyimpan
data pegawai pada database SQLite.
using SQLite.Net.Attributes;
using System;
namespace SampleSQLite
{
public class Employee
{
[PrimaryKey, AutoIncrement]
public long EmpId { get; set; }
[NotNull]
public string EmpName { get; set; }
public string Designation { get; set; }
public string Department { get; set; }
public string Qualification { get; set; }
}
}
8. Keyword PrimaryKey menandakan bahwa field EmpId adalah primary key. Autoincrement menunjukan
bahwa kode EmpId akan digenerate otomatis oleh SQLite secara berurutan.
9. Pada project portable tambahkan juga class dengan nama DataAccess.cs. Kemudian tambahkan kode
berikut:
using SQLite.Net;
using System.Collections.Generic;
using Xamarin.Forms;
namespace SampleSQLite
{
public class DataAccess
{
SQLiteConnection dbConn;
public DataAccess()
{
dbConn = DependencyService.Get<ISQLIte>().GetConnection();
dbConn.CreateTable<Employee>();
}
public List<Employee> GetAllEmployees()
{
return dbConn.Query<Employee>("Select * From [Employee]");
}
10. Kode diatas adalah kode yang digunakan untuk membuat table baru dan perintah untuk CRUD (Create,
Read, Update, Delete).
11. Pada project portable tambahkan juga kode berikut pada file App.xaml.cs.
namespace SampleSQLite
{
public partial class App : Application
{
private static DataAccess dbUtils;
public App()
{
InitializeComponent();
MainPage = new NavigationPage(new ManageEmployee());
}
12. Class tersebut adalah class yang akan dijalankan untuk pertama kali ketika aplikasi tersebut dijalankan.
13. Untuk menampilkan data pegawai, buat halaman xaml baru dengan nama ManageEmployee.xaml.
Kemudian tambahkan kode berikut.
14. Pada kode xaml diatas ditambahkan sebuah kontrol ListView untuk menampilkan data yang akan diambil
dari media penyimpanan lokal SQLIte.
15. Pada file ManageEmployee.xaml.cs tambahkan kode berikut.
namespace SampleSQLite
{
public partial class ManageEmployee : ContentPage
{
public ManageEmployee()
{
InitializeComponent();
var vList = App.DBUtils.GetAllEmployees();
lstData.ItemsSource = vList;
}
16. Kode diatas digunakan untuk menampilkan data pegawai yang diambil dari media penyimpanan lokal dan
juga menangani event untuk memilih data yang ada pada kontrol ListView untuk ditampilkan detailnya.
17. Untuk menangani penambahan data pegawai baru, buat halaman xaml baru dengan nama
AddEmployee.xaml. Kemudian tambahkan kode xaml berikut ini:
using Xamarin.Forms;
namespace SampleSQLite
{
public partial class AddEmployee : ContentPage
{
public AddEmployee()
{
InitializeComponent();
}
19. Untuk menampilkan halaman detail pegawai per record, tambahkan halaman xaml dengan nama
ShowEmployee.xaml. Halaman ini juga memiliki tombol edit dan delete record.
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="10"/>
</Grid.ColumnDefinitions>
namespace SampleSQLite
{
public partial class ShowEmplyee : ContentPage
{
Employee mSelEmployee;
public ShowEmplyee(Employee aSelectedEmp)
{
InitializeComponent();
mSelEmployee = aSelectedEmp;
BindingContext = mSelEmployee;
}
21. Terakhir tambahkan halaman xaml untuk mengedit data dengan nama EditEmployee.xaml. Kemudian
tambahkan kode berikut:
22. Tambahkan kode untuk mengedit data pada file EditEmployee.xaml.cs dibawah ini.
namespace SampleSQLite
{
public partial class EditEmployee : ContentPage
{
Employee mSelEmployee;
public EditEmployee(Employee aSelectedEmp)
{
InitializeComponent();
mSelEmployee = aSelectedEmp;
BindingContext = mSelEmployee;
}
Pada contoh dibawah ini REST Services yang dibangun menggunakan framework ASP.NET Web API yang
sudah dipasang pada layanan komputasi awan Microsoft Azure.
Untuk pengecekan apakah Web Services tersebut dapat berjalan, anda dapat menggunakan tool Fiddler.
Anda dapat mengunduh tools fiddler secara gratis pada tautan berikut ini
https://www.telerik.com/download/fiddler.
namespace TodoREST
{
public class TodoItem
{
public string ID { get; set; }
public string Name { get; set; }
public string Notes { get; set; }
public bool Done { get; set; }
}
}
4. Pada project portable, tambahkan juga class dengan nama Constants.cs untuk menyimpan alamat url dari
REST Services.
5. Pada project portable, tambahkan foder dengan nama Data. Kemudian pada folder tersebut tambahkan
interface baru dengan nama IRestService.cs. Interface ini berisi method-method yang akan digunakan untuk
menampilkan, menambahkan, mengedit, dan mendelete data.
using System.Threading.Tasks;
using TodoREST.Models;
namespace TodoREST.Data
{
public interface IRestService
{
Task<List<TodoItem>> RefreshDataAsync();
Task SaveTodoItemAsync(TodoItem item, bool isNewItem);
Task DeleteTodoItemAsync(string id);
}
}
6. Pada folder Data, tambahkan class dengan nama RestServices.cs. Class ini digunakan untuk mengakses
REST Services menggunakan class HttpClient dan menampung datanya kedalam objek koleksi yang sudah
disediakan.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using TodoREST.Data;
namespace TodoREST.Data
{
public class RestService : IRestService
{
HttpClient client;
try
{
var response = await client.GetAsync(uri);
if (response.IsSuccessStatusCode)
{
var content = await response.Content.ReadAsStringAsync();
Items = JsonConvert.DeserializeObject<List<TodoItem>>(content);
}
}
catch (Exception ex)
{
Debug.WriteLine(@"Kesalahan {0}", ex.Message);
}
return Items;
}
if (response.IsSuccessStatusCode)
{
Debug.WriteLine(@"TodoItem berhasil disimpan.");
}
}
catch (Exception ex)
{
Debug.WriteLine(@"Kesalahan {0}", ex.Message);
}
}
try
{
var response = await client.DeleteAsync(uri);
if (response.IsSuccessStatusCode)
{
Debug.WriteLine(@"TodoItem berhasil didelete.");
}
}
catch (Exception ex)
{
Debug.WriteLine(@"Kesalahan {0}", ex.Message);
}
}
}
}
7. Class diatas berisi method-method untuk mengakses REST Services yang digunakan untuk menampilkan,
menambah, mengedit, dan mendelete data.
8. Pada folder Data, tambahkan class dengan nama TodoItemManager.cs. Class ini berfungsi untuk
memanggil method pada class RestServices.cs.
using System.Collections.Generic;
using System.Threading.Tasks;
using TodoREST.Models;
namespace TodoREST.Data
{
public class TodoItemManager
{
IRestService restService;
9. Langkah selanjutnya adalah menampilkan data yang sudah diambil dari REST Services. Untuk itu pada
project portable buat folder baru dengan nama Views.
10. Pada folder Views tambahkan halaman xaml dengan nama TodoListPage.xaml. Halaman ini digunakan
untuk menampilkan informasi todolist pada kontrol ListView.
11. Tambahkan gambar plus.png dan icon.png pada project Droid (folder Resources\drawable). Dengan klik
kanan pada drawable > Add > Existing Item... > kemudian cari gambar icon
using Xamarin.Forms;
namespace TodoREST
{
public partial class TodoListPage : ContentPage
{
bool alertShown = false;
public TodoListPage()
{
InitializeComponent();
}
using System;
using TodoREST.Models;
using Xamarin.Forms;
namespace TodoREST
{
public partial class TodoItemPage : ContentPage
{
bool isNewItem;
using TodoREST.Data;
using Xamarin.Forms;
public App()
{
TodoManager = new TodoItemManager(new RestService());
MainPage = new NavigationPage(new TodoListPage());
}
}
17. Tekan tombol F5 untuk menjalankan aplikasi pada emulator Android.