DISKUSI PERTEMUAN 8
Pemrograman mobile 2
TI 15 D
- SQL LITE
SQLite itu merupakan sebuah Database yang bersifat ACID-compliant dan memiliki ukuran pustaka kode yang relatif kecil, ditulis dalam bahasa C. SQLite merupakan proyek yang bersifat public domain yang dikerjakan oleh D. Richard Hipp. SQLite adalah sebuah open source database yang telah ada cukup lama, cukup stabil, dan sangat terkenal pada perangkat kecil, termasuk Android. Android menyediakan database relasional yang ringan untuk setiap aplikasi menggunakan SQLite. Aplikasi dapat mengambil keuntungan dari itu untuk mengatur relational database engine untuk menyimpan data secara aman dan efiesien. Untuk Android, SQLite dijadikan satu di dalam Android runtime, sehingga setiap aplikasi Android dapat membuat basis data SQLite. Karena SQLite menggunakan antarmuka SQL, cukup mudah untuk digunakan orang orang dengan pengalaman lain yang berbasis databases. Terdapat beberapa alasan mengapa SQLite sangat cocok untuk pengembangan aplikasi Android, yaitu:
Database dengan konfigurasi nol. Artinya tidak ada konfigurasi database untuk para developer. Ini membuatnya relatif mudah digunakan. Tidak memiliki server. Tidak ada proses database SQLite yang berjalan. Pada dasarnya satu set libraries menyediakan fungsionalitas database. Single-file database. Ini membuat keamanan database secara langsung. Open source. Hal ini membuat developer mudah dalam pengembangan aplikasi.
SQLite dapat digunakan di Windows Phone, Android, iPhone, PHP, Firefox, Chrome dan lain – lain yang dapat dilihat di: http://www.sqlite.org/famous.html. Pada browser, biasanya SQLite ini digunakan untuk menyimpan kongfigurasi seperti history, bookmark, dan cache, sedangkan pada mobile, penggunaan SQLite ini sangat banyak seperti kontak, database tabel dsb.
SQLite adalah produk public domain. Artinya tidak punya lisensi, anda boleh mengambil binary atau source codenya secara free / GRATIS.
Contoh produk yang memekai SQLite
PHP, Firefox, Chrome, iPhone dan Android adalah contoh produk yang menggunakan SQlite. di Browser firefox, Sqlite dipakai untuk menyimpan konfigurasi, bookmark dan history website sedangkan di smartphone android, SQLite dipakai untuk menyimpan contact.
Tipe data yang didukung di SQLite :
- Numeric ( integer , float , double)
- Text ( Char , varchar , text )
- DATETIME
OS yang didukung oleh SQLite, SQLite mendukung semua platform. Anda bebas memilih OS, mau pakai Windows, Linux, Mac OSX bahkan Android dan iPhone
Sumber:
http://tersesatdikuliah.blogspot.co.id/2014/06/pengertian-sqlite.html
https://www.angon.co.id/news/phpmysql/pengertian-sqlite
- STRUKTUR DATABASE
Mengenal SQLite Database Pada Aplikasi Android
SQLite adalah database SQL opensource yang sudah built in pada device android. Setiap aplikasi memiliki SQLite database sendiri, database ini dapat diakses oleh setiap class pada aplikasi,tapi tidak bisa diakses oleh aplikasi lain. Database SQLite dibuat pada aplikasi selalu disimpan dalam /data/data/<nama package>/folder database.
SQLiteOpenHelper. Pada class ini kamu perlu override method berikut ini untuk membuat dan meng-upgrade database.
- onCreate(), dipanggil ketika database dapat diakses namum belum dibuat.
- onUpdate(), dipanggil ketika aplikasi diupgrade dan nomor versi telah berubah pada kode aplikasi android. method ini memungkinkan untuk memperbarui(update) skema database yang ada atau drop database yang ada dan menciptakan kembali melalui method OnCreate ().
Class SQLiteOpenHelper menyediakan method getReadableDatabase () dan getWritableDatabase (), untuk mendapatkan akses ke objek SQLiteDatabase.
Berikut pola desain database untuk membuat aplikasi Android yang baik.
SQLiteDatabase merupakan sebeuah kelas yang mempunya method-method seperti :
- Insert() = untuk menambahkan baris ke database
- Update () = untuk memperbarui baris pada database
- Delete () = untuk menghapus baris pada database
- execSQL () = untuk mengeksekusi sintak SQL
SQLiteOpenHelper merupakan subclass yang memiliki beberapa method seperti :
- onCreate() = di jalankan jika sebelum’nya belum ada database
- onUpgrade() = di jalankan jika sebelum’nya sudah di temukan database yang sama
- tapi beda versi, method ini bisa di manfaatkan untuk mengubah sekema database
- onOpen() = di jalankan jika database dalam keadaan open
- getWritableDatabase() = memanggil database agar bisa di masuki data
- getReadableDatabase() = memanggil database agar bisa dibaca data’nya
Cursor Setiap Query yang di eksekusi pasti membawa nilai kembalian atau feedback. Feedbeck yang dihasilkan query ini, jadi dengan kata lain cursor merepresentasikan hasil query yang di eksekusi pada baris dan kolom tertentu beberapa ini method yang di gunakan untuk latihan ini :
- moveToFirst() = untuk indah ke baris pertama
- isAfterLast () = akan mengirim pesan balik jika posisi cursor 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
Sumber :
http://ketikanpelajarbodoh.blogspot.co.id/2013/10/android-belajar-sqlite-database.html
https://plus.google.com/+Teknorialcom/posts/gPpYWUfjRhV
https://blog.teknorial.com/mengenal-sqlite-database-pada-aplikasi-android/
- KELEBIHAN DARI DATABASE SQL LITE
Ada banyak keunggulan yang dimiliki oleh SQLite dibanding database lainnya, ada 5 keunggulan SQLite.
- Mudah Dikelola
SQLite mudah dikelola karena SQLite merupakan file tunggal (atau beberapa file saja dengan tambahan log transaksi). Bila dibandingkan dengan database lainnya, SQLite juga tidak membutuhkan konfigurasi banyak. Selain itu, format filenya juga stabil di versi utama. Jadi, jika punya file database SQLite dari versi 3.0.0, pembaca tetap bisa membacanya dengan menggunakan SQLite terbaru 3.10.0. Jika pembaca ingin mengambil file database pada thumb drive, pembaca hanya perlu menyalin filenya saja.
- Sangat Stabil
SQLite secara aktif dikembangkan oleh beberapa software engineer yang handal. Dalam waktu beberapa bulan, SQLite sering dirilis. Banyak fitur yang telah ditambahkan. Salah satunya fitur dukungan untuk data JSON melalui ekstensi json1. Selain itu, SQLite juga merilis versi perbaikan dari pencarian teks lengkap, yang meliputi hasil pemeringkatan dengan menggunakan algoritma BM25. Selain menambahkan fitur baru, pengembang SQLite juga terus bekerja untuk meningkatkan performa SQLite. Dalam versi 3.8.11, SQLite menjadi dua kali lebih cepat dibanding versi 3.8.0 dan tiga kali lebih cepat dibanding versi 3.3.9 Meskipun banyak fitur yang sering ditambahkan, SQLite jarang menemukan bug didalamnya. Karena sebelum dirilis, SQLite di uji dengan pengujian yang cukup ketat.
- Bisa Diperluas
SQLite juga bisa diperluas dengan ekstensi dan diintegrasikan dengan API. Salah satu contohnya adalah modul Python Pysqlite yang menjadi driver untuk SQLite. Ada juga modul Python Apsw yang menjadi driver alternatif SQLite. Modul Apsw menyediakan banyak API yang berguna untuk mendefinisikan fungsi kustom SQL, fungsi agregat, dan kolaborasi.
- Sangat Cepat
SQLite sangat cepat jika berjalan pada lingkup yang sama sehingga tidak ada sumber daya tambahan seperti jaringan ketika menjalankan query maupun mengambil data. SQLite benar-benar fleksibel sehingga tidak membutuhkan protokol, serialisasi ataupun komunikasi melalui socket. SQLite juga bisa berjalan pada perangkat mobile, yang kini banyak dipakai di berbagai aplikasi Android.
- Mode WAL
Mode WAL pertama kali diperkenalkan pada SQLite 3.7.0. Fitur ini berguna untuk mengatasi kongkurensi dimana aktivitas membaca dan menulis data bisa dilakukan secara bersamaan. Tanpa mode WAL, akan sangat sulit jika banyak menggunakan proses yang berkaitan dengan database.
SQLite merupakan mesin database yang unik, fleksibel dan mudah dikelola. SQLite juga bisa menjadi alternatif yang bagus untuk database dalam pengembangan perangkat lunak. Itulah dia SQLite dengan berbagai keunggulannya dan sebenarnya masih banyak keunggulan SQLite yang belum diulas. Apabila ada keunggulan SQLite lain, jangan sungkan untuk menambahkannya di kolom komentar dibawah ini. Selamat mencoba SQLite.
Terdapat beberapa alasan mengapa SQLite sangat cocok untuk pengembangan aplikasi Android, yaitu:
- Database dengan konfigurasi nol. Artinya tidak ada konfigurasi database untuk para developer. Ini membuatnya relatif mudah digunakan.
- Tidak memiliki server. Tidak ada proses database SQLite yang berjalan. Pada dasarnya satu set libraries menyediakan fungsionalitas database.
- Single-file database. Ini membuat keamanan database secara langsung.
- Open source. Hal ini membuat developer mudah dalam pengembangan aplikasi.
Sumber :
https://www.codepolitan.com/5-keunggulan-sqlite
http://www.zainalhakim.web.id/apa-itu-sqllite.html
- TEKNIK PENYIMPANAN DATA
Dalam sistem Android ada beberapa teknik untuk melakukan penyimpanan data. Teknik yang umum digunakan adalah sebagai berikut :
- Shared Preferences yaitu menyimpan data beberapa nilai ( value ) dalam bentuk group key yang dikenal dengan preferences.
- Files yaitu menyimpan data dalam file, dapat berupa menulis file atau membaca dari file.
- SQLite Database yaitu penyimpanan data dalam bentuk Databases.
- Content Providers yaitu menyimpan data dalam bentuk content providers service.
Sumber:
http://virtualofworld.blogspot.co.id/2016/04/database-sqlite-pada-android.html
- IMPLEMENTASI PROGRAM
MainActivity.java
package com.okedroid.biodatadirisqlite;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
public class MainActivity extends AppCompatActivity {
String[] daftar;
ListView ListView01;
Menu menu;
protected Cursor cursor;
DataHelper dbcenter;
public static MainActivity ma;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn=(Button)findViewById(R.id.button2);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent inte = new Intent(MainActivity.this, BuatBiodata.class);
startActivity(inte);
}
});
ma = this;
dbcenter = new DataHelper(this);
RefreshList();
}
public void RefreshList(){
SQLiteDatabase db = dbcenter.getReadableDatabase();
cursor = db.rawQuery(“SELECT * FROM biodata”,null);
daftar = new String[cursor.getCount()];
cursor.moveToFirst();
for (int cc=0; cc < cursor.getCount(); cc++){
cursor.moveToPosition(cc);
daftar[cc] = cursor.getString(1).toString();
}
ListView01 = (ListView)findViewById(R.id.listView1);
ListView01.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, daftar));
ListView01.setSelected(true);
ListView01.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) {
final String selection = daftar[arg2]; //.getItemAtPosition(arg2).toString();
final CharSequence[] dialogitem = {“Lihat Biodata”, “Update Biodata”, “Hapus Biodata”};
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle(“Pilihan”);
builder.setItems(dialogitem, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
switch(item){
case 0 :
Intent i = new Intent(getApplicationContext(), LihatBiodata.class);
i.putExtra(“nama”, selection);
startActivity(i);
break;
case 1 :
Intent in = new Intent(getApplicationContext(), UpdateBiodata.class);
in.putExtra(“nama”, selection);
startActivity(in);
break;
case 2 :
SQLiteDatabase db = dbcenter.getWritableDatabase();
db.execSQL(“delete from biodata where nama = ‘”+selection+”‘”);
RefreshList();
break;
}
}
});
builder.create().show();
}});
((ArrayAdapter)ListView01.getAdapter()).notifyDataSetInvalidated();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
activity_main.xml
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:paddingBottom=”@dimen/activity_vertical_margin”
android:paddingLeft=”@dimen/activity_horizontal_margin”
android:paddingRight=”@dimen/activity_horizontal_margin”
android:paddingTop=”@dimen/activity_vertical_margin”
android:background=”#ecf0f1″
tools:context=”.MainActivity” >
<Button
android:id=”@+id/button2″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentTop=”true”
android:layout_toRightOf=”@+id/button1″
style=”?android:attr/borderlessButtonStyle”
android:drawableLeft=”@drawable/icon_add”
android:text=”Buat Biodata Baru” />
<ListView
android:id=”@+id/listView1″
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_below=”@+id/button2″ android:layout_alignParentLeft=”true”
android:layout_alignParentStart=”true”>
</ListView>
<ImageView android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:src=”@drawable/okedroid”
android:alpha=”0.4″
android:layout_centerVertical=”true” android:layout_alignParentLeft=”true”
android:layout_alignParentStart=”true”/>
</RelativeLayout>
SQLiteDatabase
SQLiteDatabase adalah sebuah class dasar yang bekerja , untuk database sqlite di perangkat Android. SqLiteDatabase akan menjalankan perintah SQL secara langsung dengan method exceSQL(). Dan juga akan melakukan manajamen database secara umum lainya , method yang digunakan seperti : Insert() ,Update () dan ,Delete ().
BuatBiodata.java
package com.okedroid.biodatadirisqlite;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class BuatBiodata extends AppCompatActivity {
protected Cursor cursor;
DataHelper dbHelper;
Button ton1, ton2;
EditText text1, text2, text3, text4, text5;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_buat_biodata);
dbHelper = new DataHelper(this);
text1 = (EditText) findViewById(R.id.editText1);
text2 = (EditText) findViewById(R.id.editText2);
text3 = (EditText) findViewById(R.id.editText3);
text4 = (EditText) findViewById(R.id.editText4);
text5 = (EditText) findViewById(R.id.editText5);
ton1 = (Button) findViewById(R.id.button1);
ton2 = (Button) findViewById(R.id.button2);
ton1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.execSQL(“insert into biodata(no, nama, tgl, jk, alamat) values(‘” +
text1.getText().toString()+”‘,'”+
text2.getText().toString() +”‘,'” +
text3.getText().toString()+”‘,'”+
text4.getText().toString() +”‘,'” +
text5.getText().toString() + “‘)”);
Toast.makeText(getApplicationContext(), “Berhasil”, Toast.LENGTH_LONG).show();
MainActivity.ma.RefreshList();
finish();
}
});
ton2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
finish();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
activity_buat_biodata.xml
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:paddingBottom=”@dimen/activity_vertical_margin”
android:paddingLeft=”@dimen/activity_horizontal_margin”
android:paddingRight=”@dimen/activity_horizontal_margin”
android:paddingTop=”@dimen/activity_vertical_margin”
tools:context=”.BuatBiodata” >
<EditText
android:id=”@+id/editText1″
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/textView1″
android:layout_below=”@+id/textView1″ >
<requestFocus />
</EditText>
<TextView
android:id=”@+id/textView1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_alignParentTop=”true”
android:text=”Nomor” />
<TextView
android:id=”@+id/textView2″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/editText1″
android:layout_below=”@+id/editText1″
android:layout_marginTop=”10dp”
android:text=”Nama” />
<EditText
android:id=”@+id/editText2″
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/textView2″
android:layout_below=”@+id/textView2″ />
<TextView
android:id=”@+id/textView3″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/editText2″
android:layout_below=”@+id/editText2″
android:layout_marginTop=”10dp”
android:text=”Tanggal Lahir” />
<EditText
android:id=”@+id/editText3″
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/textView3″
android:layout_below=”@+id/textView3″ />
<TextView
android:id=”@+id/textView4″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/editText3″
android:layout_below=”@+id/editText3″
android:layout_marginTop=”10dp”
android:text=”Jenis Kelamin” />
<EditText
android:id=”@+id/editText4″
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/textView4″
android:layout_below=”@+id/textView4″ />
<TextView
android:id=”@+id/textView5″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/editText4″
android:layout_below=”@+id/editText4″
android:layout_marginTop=”10dp”
android:text=”Alamat” />
<EditText
android:id=”@+id/editText5″
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/textView5″
android:layout_below=”@+id/textView5″ />
<Button
android:id=”@+id/button1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/editText5″
android:layout_alignParentBottom=”true”
android:text=”Simpan” />
<Button
android:id=”@+id/button2″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignBaseline=”@+id/button1″
android:layout_alignBottom=”@+id/button1″
android:layout_toRightOf=”@+id/textView4″
android:text=”Back” />
</RelativeLayout>
LihatBiodata.java
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class LihatBiodata extends AppCompatActivity {
protected Cursor cursor;
DataHelper dbHelper;
Button ton2;
TextView text1, text2, text3, text4, text5;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lihat_biodata);
dbHelper = new DataHelper(this);
text1 = (TextView) findViewById(R.id.textView1);
text2 = (TextView) findViewById(R.id.textView2);
text3 = (TextView) findViewById(R.id.textView3);
text4 = (TextView) findViewById(R.id.textView4);
text5 = (TextView) findViewById(R.id.textView5);
SQLiteDatabase db = dbHelper.getReadableDatabase();
cursor = db.rawQuery(“SELECT * FROM biodata WHERE nama = ‘” +
getIntent().getStringExtra(“nama”) + “‘”,null);
cursor.moveToFirst();
if (cursor.getCount()>0)
{
cursor.moveToPosition(0);
text1.setText(cursor.getString(0).toString());
text2.setText(cursor.getString(1).toString());
text3.setText(cursor.getString(2).toString());
text4.setText(cursor.getString(3).toString());
text5.setText(cursor.getString(4).toString());
}
ton2 = (Button) findViewById(R.id.button1);
ton2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
finish();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
activity_lihat_biodata.xml
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:paddingBottom=”@dimen/activity_vertical_margin”
android:paddingLeft=”@dimen/activity_horizontal_margin”
android:paddingRight=”@dimen/activity_horizontal_margin”
android:paddingTop=”@dimen/activity_vertical_margin”
tools:context=”.LihatBiodata” >
<TextView
android:id=”@+id/textView1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentRight=”true”
android:layout_alignParentTop=”true”
android:layout_marginRight=”104dp”
android:layout_marginTop=”20dp”
android:text=”TextView” />
<TextView
android:id=”@+id/textView2″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignRight=”@+id/textView1″
android:layout_below=”@+id/textView1″
android:layout_marginTop=”20dp”
android:text=”TextView” />
<TextView
android:id=”@+id/textView3″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/textView2″
android:layout_below=”@+id/textView2″
android:layout_marginTop=”20dp”
android:text=”TextView” />
<TextView
android:id=”@+id/textView4″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/textView3″
android:layout_below=”@+id/textView3″
android:layout_marginTop=”20dp”
android:text=”TextView” />
<TextView
android:id=”@+id/textView5″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignRight=”@+id/textView4″
android:layout_below=”@+id/textView4″
android:layout_marginTop=”20dp”
android:text=”TextView” />
<TextView
android:id=”@+id/TextView05″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignBaseline=”@+id/textView5″
android:layout_alignBottom=”@+id/textView5″
android:layout_alignLeft=”@+id/TextView03″
android:text=”Alamat” />
<TextView
android:id=”@+id/TextView03″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignBaseline=”@+id/textView4″
android:layout_alignBottom=”@+id/textView4″
android:layout_alignLeft=”@+id/TextView04″
android:text=”Jenis Kelamin” />
<TextView
android:id=”@+id/TextView04″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignBaseline=”@+id/textView3″
android:layout_alignBottom=”@+id/textView3″
android:layout_alignLeft=”@+id/TextView02″
android:text=”Tanggal Lahir” />
<TextView
android:id=”@+id/TextView02″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignBaseline=”@+id/textView2″
android:layout_alignBottom=”@+id/textView2″
android:layout_alignLeft=”@+id/TextView01″
android:text=”Nama” />
<TextView
android:id=”@+id/TextView01″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_above=”@+id/textView2″
android:layout_alignParentLeft=”true”
android:text=”Nomor” />
<Button
android:id=”@+id/button1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/TextView05″
android:layout_below=”@+id/TextView05″
android:layout_marginTop=”34dp”
android:text=”Back” />
</RelativeLayout>
UpdateBiodata.java
package com.okedroid.biodatadirisqlite;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class UpdateBiodata extends AppCompatActivity {
protected Cursor cursor;
DataHelper dbHelper;
Button ton1, ton2;
EditText text1, text2, text3, text4, text5;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update_biodata);
dbHelper = new DataHelper(this);
text1 = (EditText) findViewById(R.id.editText1);
text2 = (EditText) findViewById(R.id.editText2);
text3 = (EditText) findViewById(R.id.editText3);
text4 = (EditText) findViewById(R.id.editText4);
text5 = (EditText) findViewById(R.id.editText5);
SQLiteDatabase db = dbHelper.getReadableDatabase();
cursor = db.rawQuery(“SELECT * FROM biodata WHERE nama = ‘” +
getIntent().getStringExtra(“nama”) + “‘”,null);
cursor.moveToFirst();
if (cursor.getCount()>0)
{
cursor.moveToPosition(0);
text1.setText(cursor.getString(0).toString());
text2.setText(cursor.getString(1).toString());
text3.setText(cursor.getString(2).toString());
text4.setText(cursor.getString(3).toString());
text5.setText(cursor.getString(4).toString());
}
ton1 = (Button) findViewById(R.id.button1);
ton2 = (Button) findViewById(R.id.button2);
// daftarkan even onClick pada btnSimpan
ton1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.execSQL(“update biodata set nama='”+
text2.getText().toString() +”‘, tgl='” +
text3.getText().toString()+”‘, jk='”+
text4.getText().toString() +”‘, alamat='” +
text5.getText().toString() + “‘ where no='” +
text1.getText().toString()+”‘”);
Toast.makeText(getApplicationContext(), “Berhasil”, Toast.LENGTH_LONG).show();
MainActivity.ma.RefreshList();
finish();
}
});
ton2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
finish();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
activity_update_biodata.xml
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:paddingBottom=”@dimen/activity_vertical_margin”
android:paddingLeft=”@dimen/activity_horizontal_margin”
android:paddingRight=”@dimen/activity_horizontal_margin”
android:paddingTop=”@dimen/activity_vertical_margin”
tools:context=”.UpdateBiodata” >
<EditText
android:id=”@+id/editText1″
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/textView1″
android:layout_below=”@+id/textView1″ >
<requestFocus />
</EditText>
<TextView
android:id=”@+id/textView1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_alignParentTop=”true”
android:text=”Nomor” />
<TextView
android:id=”@+id/textView2″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/editText1″
android:layout_below=”@+id/editText1″
android:layout_marginTop=”10dp”
android:text=”Nama” />
<EditText
android:id=”@+id/editText2″
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/textView2″
android:layout_below=”@+id/textView2″ />
<TextView
android:id=”@+id/textView3″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/editText2″
android:layout_below=”@+id/editText2″
android:layout_marginTop=”10dp”
android:text=”Tanggal Lahir” />
<EditText
android:id=”@+id/editText3″
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/textView3″
android:layout_below=”@+id/textView3″ />
<TextView
android:id=”@+id/textView4″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/editText3″
android:layout_below=”@+id/editText3″
android:layout_marginTop=”10dp”
android:text=”Jenis Kelamin” />
<EditText
android:id=”@+id/editText4″
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/textView4″
android:layout_below=”@+id/textView4″ />
<TextView
android:id=”@+id/textView5″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/editText4″
android:layout_below=”@+id/editText4″
android:layout_marginTop=”10dp”
android:text=”Alamat” />
<EditText
android:id=”@+id/editText5″
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/textView5″
android:layout_below=”@+id/textView5″ />
<Button
android:id=”@+id/button1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignLeft=”@+id/editText5″
android:layout_alignParentBottom=”true”
android:text=”Update” />
<Button
android:id=”@+id/button2″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignBaseline=”@+id/button1″
android:layout_alignBottom=”@+id/button1″
android:layout_toRightOf=”@+id/textView4″
android:text=”Back” />
</RelativeLayout>
Sumber : http://www.okedroid.com/2016/03/cara-membuat-aplikasi-biodata-diri-sqlite-crud-android-studio.html
Link PPT : Pertemuan 8 (SQLite)
DISKUSI PERTEMUAN 8 ANDROID DATABASE SQL LITE
Agung Edi W
Faizal Aji R
Khaerul Imam
Abdurahman
Eko Prasetyo
Windu Febriansah