Anda di halaman 1dari 13

55

Modul

7
Database Internal
Tujuan
Praktikan diharapkan dapat menggunakan Android Studio untuk membuat program sederhana pada
smartphone/ emulator. Di akhir praktikum ini, praktikan diharapkan:

• Membuat koneksi database pada Android Studio


• Menerapkan koneksi database external pada Android Studio

Persiapan
1. Buku ajar (jika ada)/diktat kuliah/materi dari sumber lain
2. Alat tulis
3. Kertas Buram
4. Lembar jawaban
5. Lembar penilaian (disiapkan oleh asisten)
6. Komputer yang sudah di-install Android Studio & Emulator didalamnya
7. Android Smartphone (Jika tidak menginstall emulator)

Materi Pokok
Praktikum ini mengasumsikan bahwa praktikan telah mempelajari materi tentang Implementasi
Database Internal pada android. Praktikan juga diharapkan sudah dapat menerapkan penggunaan
menu bar, menu item, dan toolbar untuk mendukung implementasi tersebut. Agar praktikan dapat
mencapai tujuan dalam pertemuan praktikum ketujuh ini, maka praktikan harus aktif bertanya dan
mencoba mempraktekkan tugas-tugas yang ada dalam praktikum ketujuh ini.
56

Proses
Pertama bacalah dulu materi tentang Database Internal pada android selama kira-kira 10 menit.
Berikutnya berdiskusilah dengan teman Anda tentang Database Internal seperti SQLite, diskusi
dilakukan selama 20 menit. Kasus pertama sebagai latihan dikerjakan dalam waktu 30 menit.
Lanjutkan praktikum Anda dengan menyelesaikan soal pada bagian latihan dengan batasan waktu
selama 30 menit. Bagian terakhir adalah tugas, yaitu project yang harus dikerjakan di rumah dan wajib
dikumpulkan pada pertemuan berikutnya.

Aktivitas
1. Praktikan membaca buku ajar (jika ada)/ diktat kuliah/materi dari sumber lain tentang Database
Internal Android sebagai materi bab ketujuh. Temukan bagian penting dalam topik ini,
kemudian tulis sebagai ringkasan hasil belajar.

2. Praktikan berdiskusi tentang Database Internal Android serta menerapkannya dalam sebuah
aplikasi berbasis android.

Login Shared Preferences

● Buat projek baru pada Android Studio


● Buka file strings.xml dan sesuaikan kodenya seperti berikut

Strings.xml

<resources>
<string name="app_name">Latihan Pertemuan 7</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string name="Username">Username</string>
<string name="Password">Password</string>
<string name="Signin">Sign In</string>
<string name="Login">Login</string>
<string name="logout">Logout</string>
<string name="title_activity_welcome">Welcome</string>
<string name="exit">Exit without logout</string>
</resources>

● Buat Empty Activity baru bernama Welcome.


● Buka layout activity_main.xml dan sesuaikan kodenya menjadi seperti berikut

activity_main.xml

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


<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"
tools:context=".MainActivity">

<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
57

android:layout_below="@+id/textView2"
android:layout_alignRight="@+id/editText1"
android:ems="10"
android:inputType="textPassword"/>

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="52dp"
android:text="@string/Username"
android:textAppearance="?android:attr/textAppearanceMedium" />

<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/textView1"
android:layout_alignParentRight="true"
android:layout_marginTop="27dp"
android:layout_marginRight="16dp"
android:ems="10">
<requestFocus />
</EditText>

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText1"
android:layout_alignRight="@+id/textView1"
android:text="@string/Password"
android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/editText1"
android:layout_centerHorizontal="true"
android:layout_marginBottom="22dp"
android:text="@string/Signin"
android:textAppearance="?android:attr/textAppearanceMedium" />

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText2"
android:layout_centerHorizontal="true"
android:layout_marginTop="45dp"
android:onClick="login"
android:text="@string/Login" />
</RelativeLayout>

● Buka layout activity_welcome.xml dan sesuaikan juga kodenya


58

activity_welcome.xml

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


<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"
tools:context=".Welcome">

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="146dp"
android:onClick="logout"
android:text="@string/logout" />

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/button1"
android:layout_alignParentTop="true"
android:layout_marginTop="64dp"
android:text="@string/title_activity_welcome"
android:textAppearance="?android:attr/textAppearanceLarge" />

<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/button1"
android:layout_centerHorizontal="true"
android:layout_marginTop="43dp"
android:onClick="exit"
android:text="@string/exit" />

</RelativeLayout>

● Selanjutnya, buka class Welcome.java dan ubah kodenya menjadi seperti berikut

Welcome.java

import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;

public class Welcome extends AppCompatActivity {

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

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action
59

// bar if it is present.
getMenuInflater().inflate(R.menu.welcome, menu);
return true;
}
public void logout(View view){
SharedPreferences sharedpreferences = getSharedPreferences
(MainActivity.MyPREFERENCES, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.clear();
editor.commit();
moveTaskToBack(true);
Welcome.this.finish();
}
public void exit(View view){
moveTaskToBack(true);
Welcome.this.finish();
}
}

● Setelah itu buka class MainActivity.java dan sesuaikan juga kodenya

MainActivity.java

import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

private EditText username,password;


public static final String MyPREFERENCES = "MyPrefs" ;
public static final String name = "nameKey";
public static final String pass = "passwordKey";
SharedPreferences sharedpreferences;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
username = (EditText)findViewById(R.id.editText1);
password = (EditText)findViewById(R.id.editText2);
}
@Override
protected void onResume() {
sharedpreferences=getSharedPreferences(MyPREFERENCES,
Context.MODE_PRIVATE);
if (sharedpreferences.contains(name))
{
if(sharedpreferences.contains(pass)){
Intent i = new Intent(this, Welcome.class);
startActivity(i);
}
}
super.onResume();
}
public void login(View view){
SharedPreferences.Editor editor = sharedpreferences.edit();
String u = username.getText().toString();
60

String p = password.getText().toString();
editor.putString(name, u);
editor.putString(pass, p);
editor.commit();
Intent i = new Intent(this, Welcome.class);
startActivity(i);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.welcome, menu);
return true;
}
}

● Sekarang jalankan projek jika sudah disesuaikan semua kodenya dan hasilnya akan menjadi
seperti berikut

Login SQLite

● Buat projek baru pada android studio


● Tambahkan Empty Activity baru bernama Admin
● Isi kode pada activity_main.xml seperti berikut ini

activity_main.xml

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


<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"
tools:context=".MainActivity">

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="21dp"
android:text="Username" />

<EditText
android:id="@+id/editText1"
61

android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_alignLeft="@+id/textView1"
android:layout_marginTop="10dp">
<requestFocus />
</EditText>

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText1"
android:layout_alignLeft="@+id/editText1"
android:layout_marginTop="21dp"
android:text="Password" />

<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/textView2"
android:layout_alignLeft="@+id/textView2"
android:layout_marginTop="10dp"
android:inputType="textPassword" />

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText2"
android:layout_alignLeft="@+id/editText2"
android:layout_marginTop="31dp"
android:text="Login" />

<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/button1"
android:text="Register" />

<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button2"
android:layout_alignBottom="@+id/button2"
android:layout_toRightOf="@+id/button2"
android:text="Keluar" />

</RelativeLayout>

● Buka layout activity_admin.xml dan sesuaikan kodenya


62

activity_admin.xml

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


<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"
tools:context=".Admin">

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Logout" />

<RatingBar
android:id="@+id/ratingBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" />

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/ratingBar1"
android:layout_centerHorizontal="true"
android:layout_marginBottom="16dp"
android:text="Selamat Data Pada Halaman Administrasi" />

</RelativeLayout>

● Buatlah folder resources baru didalam /res bernama menu, dan tambahkan 2 file .xml
didalamnya yaitu,

main.xml

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


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

</menu>

admin.xml

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


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

</menu>

● Lalu buat class baru bernama DBUserAdapter, dan isikan kodenya seperti berikut
63

DBUserAdapter.java

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DBUserAdapter {


public static final String KEY_ROWID = "_id";
public static final String KEY_USERNAME= "username";
public static final String KEY_PASSWORD = "password";
private static final String TAG = "DBAdapter";
private static final String DATABASE_NAME = "users.db";
private static final String DATABASE_TABLE = "users";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE =
"create table users (_id integer primary key autoincrement, "
+ "username text not null, "
+ "password text not null);";
private Context context = null;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;

public DBUserAdapter(Context ctx)


{
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}

private static class DatabaseHelper extends SQLiteOpenHelper {


DatabaseHelper(Context context) {
super(context, DATABASE_NAME,
null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL(DATABASE_CREATE);
db.execSQL("insert into users values ('1','saya','saya');");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
Log.w(TAG, "Upgrading database from version " + oldVersion
+ " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS users");
onCreate(db);
}
}

public void open() throws SQLException {


db = DBHelper.getWritableDatabase();
}

public void close() {


DBHelper.close();
}

public long AddUser(String username, String password)


{
ContentValues initialValues = new ContentValues();
64

initialValues.put(KEY_USERNAME, username);
initialValues.put(KEY_PASSWORD, password);
return db.insert(DATABASE_TABLE, null, initialValues);
}

public boolean Register(String username, String password) throws SQLException {


Cursor mCursor = db.rawQuery("insert into " + DATABASE_TABLE +
"(username, password) values (?,?)",
new String[]{username,password});
if (mCursor != null) {
if(mCursor.getCount() > 0)
{
return true;
}
}
return false;
}

public boolean Login(String username, String password) throws SQLException {


Cursor mCursor = db.rawQuery("SELECT * FROM "
+ DATABASE_TABLE + " WHERE username=? AND password=?"
, new String[]{username,password});
if (mCursor != null) {
if(mCursor.getCount() > 0)
{
return true;
}
}
return false;
}
}

● Buka class Admin.java dan sesuaikan kodenya

Admin.java

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

public class Admin extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_admin);
Button btnLogout=(Button)findViewById(R.id.button1);
btnLogout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent keli = new Intent(Admin.this,
MainActivity.class);
startActivity(keli);
finish();
}
});
}

@Override
65

public boolean onCreateOptionsMenu(Menu menu) {


// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.admin, menu);
return true;
}
}

● Sekarang buka class MainActivity.java dan sesuaikan juga kodenya

MainActivity.java

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

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

final EditText txtUserName = (EditText) findViewById(R.id.editText1);


final EditText txtPassword = (EditText) findViewById(R.id.editText2);
Button btnLogin = (Button) findViewById(R.id.button1);
Button btnRegister = (Button) findViewById(R.id.button2);
Button btnKeluar = (Button) findViewById(R.id.button3);
btnKeluar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
finish();
}
});
btnRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
String username = txtUserName.getText().toString();
String password = txtPassword.getText().toString();
try {
DBUserAdapter dbaUser = new DBUserAdapter(MainActivity.this);
dbaUser.open();
if (dbaUser.Register(username, password)) {
Toast.makeText(MainActivity.this
, "Create Data", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(MainActivity.this
, "Tambah Username/Password"
, Toast.LENGTH_LONG).show();
}
dbaUser.close();
} catch (Exception e) {
// TODO: handle exception
Toast.makeText(MainActivity.this, e.getMessage()
, Toast.LENGTH_LONG).show();
}
}
66

});

btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String username = txtUserName.getText().toString();
String password = txtPassword.getText().toString();
try {
if (username.length() > 0 && password.length() > 0) {
DBUserAdapter dbUser = new DBUserAdapter(MainActivity.this);
dbUser.open();
if (dbUser.Login(username, password)) {
Toast.makeText(MainActivity.this
, "Successfully Logged In"
, Toast.LENGTH_LONG).show();
Intent kela = new Intent(MainActivity.this
, Admin.class);
startActivity(kela);
} else {
Toast.makeText(MainActivity.this
, "Invalid Username/Password"
, Toast.LENGTH_LONG).show();
}
dbUser.close();
}
} catch (Exception e) {
Toast.makeText(MainActivity.this, e.getMessage()
, Toast.LENGTH_LONG).show();
}
}
});
}

@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;
}
}

● Sekarang jalankan projeknya dan hasilnya akan menjadi seperti ini


67

Latihan
Kembangkan aplikasi yang sudah dibuat pada aktifitas, dengan menggabungkan fungsi dari
SharedPreferences dengan database SQLite!

Penutup
Tugas
Buatlah sebuah aplikasi CRUD (Tema bebas) dengan mengimplementasikan CRUD didalamnya
dengan syarat harus ada fitur login dan register!

Anda mungkin juga menyukai