• Tidak ada hasil yang ditemukan

Praktikum XIV Aplikasi dengan Database SQLite

N/A
N/A
Protected

Academic year: 2021

Membagikan "Praktikum XIV Aplikasi dengan Database SQLite"

Copied!
11
0
0

Teks penuh

(1)

Praktikum XIV

Aplikasi dengan Database SQLite

Pokok bahasan:

• Database SQLite

• Proses CrUD (Create, Update, Delete) Tujuan Belajar:

Setelah mempelajari modul ini mahasiswa diharapkan mengetahui: • Proses penyimpanan pada sqlite

• Membuat aplikasi menggunakan sqlite secara sederhana

Teori Dasar SQLite database

Android telah menyediakan suatu database yang disebut SQLite untuk menyimpan data dengan model basis data relasional. Aplikasi-aplikasi tertentu yang membutuhkan data secara

terstruktur tentu akan sangat terbantu dengan adanya SQLite ini. Aplikasi yang biasanya menggunakan data yang terstruktur misalnya aplikasi kamus, buku telepon dan sebagainya. Sqlite merupakan lighweight database application yang cukup ideal untuk aplikasi mobile. Kelas-kelas yang terdapat di aplikasi yang menggunakan SQLite

a. SQLite Database

Merupakan kelas yang mempunyai metode seperti: • Insert(), meambahkan baris ke database • Update(), memperbarui baris pada database • Delete(), menghapus baris pada database • execSQL(), untuk mengeksekusi sintak SQL b. SQLiteOpenHelper

Merupakan sub kelas yang memiliki beberapa metode seperti:

(2)

• onUpgrade(), dijalankan jika sebelumnya sudah ditemukan database yang sama namun beda versi. Metode ini bisa digunakan untuk mengubah skema database. • onOpen(), dijalankan jika database sudah dalam keadaan terbuka

• getWriteDatabase(), berfungsi untuk memanggil database agar bisa dimasuki data.

• getReadableDatabase(), berfungsi untuk memanggil database agar bisa membaca datanya.

Cursor

Cursor mempresentasikan hasil query yang dieksekusi pada baris dan kolom tertentu. Contoh di bawah merupakan ilustrasi mengenai kursor

[Melly, Bekasi] 

Nama Kota jarwo Bekasi Tusam Jakarta Fitri Jogjakarta

Metode yang digunakan pada praktikum ini antara lain: • moveToFirst(), pindah ke baris pertama

• isAfterLast(), mengirim pesan balik jika posisi kursor sudah berada di baris terakhir. • getLong(), untuk mengambil data pada kolom yang mempunyai tipe data long • getString(), untuk mengambil data pada kolom yang mempunyai tipe data string.

Project pada modul ini adalah membuat aplikasi Android untuk memasukkan nama dan hobi ke dalam form android yang akan diisikan ke database.

(3)

mainActivity.java package com.datahobi; import java.util.ArrayList; import com.db.satu.R; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TableLayout; import android.widget.TableRow; import android.widget.TextView; import android.widget.Toast;

public class MainActivity extends Activity { DatabaseManager dm;

EditText nama, hobi; Button addBtn;

TableLayout tabel4data;// tabel for data

/** Called when the activity is first created. */ @Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main); dm = new DatabaseManager(this);

tabel4data = (TableLayout) findViewById(R.id.tabel_data); nama = (EditText) findViewById(R.id.inNama);

hobi = (EditText) findViewById(R.id.inHobi); addBtn = (Button) findViewById(R.id.btnAdd);

addBtn.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View v) {

// TODO Auto-generated method stub simpanData();

} });

updateTable(); }

protected void simpanData() {

// TODO Auto-generated method stub try {

(4)

dm.TambahRow(nama.getText().toString(), hobi.getText().toString());

Toast.makeText(getBaseContext(),

nama.getText().toString() + ", berhasil disimpan", Toast.LENGTH_SHORT).show();

updateTable(); kosongkanField(); } catch (Exception e) {

// TODO Auto-generated catch block e.printStackTrace();

Toast.makeText(getBaseContext(), "gagal simpan, " + e.toString(),

Toast.LENGTH_LONG).show(); }

}

protected void kosongkanField() { nama.setText("");

hobi.setText(""); }

protected void updateTable() {

// TODO Auto-generated method stub

while (tabel4data.getChildCount() > 1) { tabel4data.removeViewAt(1);

}

double aa = tabel4data.getChildCount(); String a = String.valueOf(aa);

Toast.makeText(getBaseContext(), "tabel data child : " + a, Toast.LENGTH_SHORT).show();

ArrayList<ArrayList<Object>> data = dm.ambilSemuaBaris();// for (int posisi = 0; posisi < data.size(); posisi++) {

TableRow tabelBaris = new TableRow(this); ArrayList<Object> baris = data.get(posisi); TextView idTxt = new TextView(this);

idTxt.setText(baris.get(0).toString()); tabelBaris.addView(idTxt);

TextView namaTxt = new TextView(this); namaTxt.setText(baris.get(1).toString()); tabelBaris.addView(namaTxt);

TextView hobiTxt = new TextView(this); hobiTxt.setText(baris.get(2).toString()); tabelBaris.addView(hobiTxt);

(5)

tabel4data.addView(tabelBaris); }

} }

(6)

DatabaseManager,java package com.datahobi; import java.util.ArrayList; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log;

public class DatabaseManager {

private static final String ROW_ID = "_id"; private static final String ROW_NAMA = "nama"; private static final String ROW_HOBI = "hobi";

private static final String NAMA_DB = "Databasehobi";// nama database private static final String NAMA_TABEL = "hobiku"; // nama tabel

private static final int DB_VERSION =1;

//CREATE TABLE hobiku (_id integer PRIMARY KEY autoincrement, nama text,hobi text)

private static final String CREATE_TABLE = "create table "+NAMA_TABEL+"

("+ROW_ID+" integer PRIMARY KEY autoincrement, "+ROW_NAMA+" text,"+ROW_HOBI+" text)";

private final Context context;

private DatabaseOpenHelper dbHelper; private SQLiteDatabase db;

public DatabaseManager(Context ctx) { this.context = ctx;

dbHelper = new DatabaseOpenHelper(context); db = dbHelper.getWritableDatabase();

}

private static class DatabaseOpenHelper extends SQLiteOpenHelper { public DatabaseOpenHelper(Context context) {

super(context, NAMA_DB, null, DB_VERSION); // TODO Auto-generated constructor stub }

@Override

public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL(CREATE_TABLE);

(7)

@Override

public void onUpgrade(SQLiteDatabase db, int oldVer, int newVer) {

// TODO Auto-generated method stub"DROP TABLE IF EXISTS titles"

db.execSQL("DROP TABLE IF EXISTS "+NAMA_DB); onCreate(db);

} }

public void close() { dbHelper.close(); }

public void TambahRow(String nama, String hobi) { ContentValues values = new ContentValues(); values.put(ROW_NAMA, nama);

values.put(ROW_HOBI, hobi);

try {

// db.delete(NAMA_TABEL, null, null); db.insert(NAMA_TABEL, null, values); } catch (Exception e) {

Log.e("DB ERROR", e.toString()); e.printStackTrace();

} }

public ArrayList<ArrayList<Object>> ambilSemuaBaris() { ArrayList<ArrayList<Object>> dataArray = new ArrayList<ArrayList<Object>>();

Cursor cur; try {

cur = db.query(NAMA_TABEL,

new String[] { ROW_ID, ROW_NAMA, ROW_HOBI }, null, null,

null, null, null); cur.moveToFirst();

if (!cur.isAfterLast()) { do {

ArrayList<Object> dataList = new ArrayList<Object>();

(8)

dataList.add(cur.getString(1)); dataList.add(cur.getString(2)); dataArray.add(dataList); } while (cur.moveToNext()); } } catch (Exception e) {

// TODO Auto-generated catch block e.printStackTrace();

Log.e("DEBE ERROR", e.toString()); }

return dataArray; }

}

Tambahkan script pada string.xml menjadi seperti di bawah ini

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

<string name="hello">Masukkan nama dan hobi</string>

<string name="app_name">Database nama dan hobby</string>

<string name="btnAddtxt">Tambah Data</string>

<string name="namaLabel">Nama</string>

<string name="hobiLabel">hobi</string>

<string name="nomorLabel">No.</string> </resources>

(9)

Tambahkan script mainactivity layout menjadi seperti di bawah ini

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<TextView android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello" />

<LinearLayout android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/linearLayout1"> <EditText android:id="@+id/inNama"

android:layout_height="wrap_content"

android:layout_width="100dip"></EditText> <EditText android:id="@+id/inHobi"

android:layout_height="wrap_content"

android:layout_width="100dip"></EditText> <Button android:layout_width="wrap_content"

android:id="@+id/btnAdd"

android:layout_height="wrap_content"

android:text="@string/btnAddtxt"></Button> </LinearLayout>

<TableLayout android:layout_height="wrap_content"

android:layout_width="match_parent"

android:id="@+id/tabel_data">

<TableRow android:id="@+id/tableRow1"

android:layout_width="wrap_content"

android:layout_height="wrap_content">

<TextView android:layout_height="wrap_content"

android:layout_width="50dip"

android:text="@string/nomorLabel"

android:id="@+id/no_id"></TextView> <TextView android:layout_height="wrap_content"

android:layout_width="100dip"

android:text="@string/namaLabel"

android:id="@+id/nama_id"></TextView> <TextView android:layout_width="100dip"

android:layout_height="wrap_content"

android:text="@string/hobiLabel"

android:id="@+id/hobi_id"></TextView> </TableRow>

</TableLayout> </LinearLayout>

(10)

Jalankan aplikasi tersebut

Data ditambah anto

(11)

Referensi

Dokumen terkait

Lalu masuk kedalam Reverse Osmosis Unit 1 dan 2, yang bekerja untuk memproduksi air bersih dan hasilnya masuk ke Reverse Osmosis Tank untuk pembuangannya (reject)

Ciri teori belajar dari pernyataan bahwa seorang guru melakukan pembelajaran dengan memberikan kebebasan yang luas kepada siswa untuk menentukan apa

- merujuk kepada syarikat yang mengeluarkan produk yang sama dan dijual dalam pasaran yang sama dengan produk usahawan4. - pesaing boleh memberi sumbangan dari segi meningkatkan

Penelitian ini bertujuan untuk menentukan survival rate serta memperkirakan Total Akumulasi Biomassa Atas Permukaan dari jenis-jenis pohon utama hutan rawa gambut yang digunakan

Berdasarkan hasil analisis data dan pemba- hasan yang telah diurai, maka dapat diambil kesimpulan bahwa variabel PDRB di kota DIY pada tahun 2006-2012 dipengaruhi oleh Pena-

Menimbang, bahwa putusan Pengadilan Negeri Subang Nomor : 11/Pdt.Plw/2017/PN.Sng diucapkan pada tanggal 8 Agustus 2017 dengan di hadiri oleh Kuasa Hukum Terlawan

Metode penentuan lokasi penelitian dilakukan secara purposive (sengaja). Jumlah sampel dalam penelitian ini adalah 30 responden pengusaha brem dan teknik pengambilan

Berdasarkan hasil penelitian yang didapatkan bahwa ekstrak etanol daun Sirih ( Piper betle L) berpengaruh terhadap proses spermatogenesis pada tikus putih jantan