Tujuan Pembelajaran Percobaan 1 : Membuat table dan insert field pada Android

Workshop Struktur dan Pemakaian Teknologi Game 134

7.1 Tujuan Pembelajaran

1. Memahami macam penyimpanan data pada Android 2. Memahami cara menulis dan membaca file dari penyimpanan internal dan eksternal 3. Memahami penggunaan database SQLite

7.2 Dasar Teori

Android menyediakan 4 mekanisme dalam menyimpan dan mendapatkan kembali data, yaitu : 1. Preferences, 2. Files, 3. Database, and 4. Network. Dalam Android, semua data aplikasi termasuk file private terhadap aplikasi itu sendiri. Android juga menyediakan cara untuk sebuah aplikasi untuk menampilkan data privatenya ke aplikasi lain menggunakan content Providers. Android menyiapkan beberapa content providers untuk tipe data standar, seperti image, audio, video files dan personal contact information.

7.2.1 Preferences

Preferences adalah mekanisme yang mudah dalam android untuk menyimpan dan mendapatkan kembali pasangan key-value dari tipe data primitivedisebut juga dengan Maps dan Associative Arrays Biasanya digunakan untuk menyimpan state informasi dan data bersama diantara beberapa activity dalam aplikasi. Dalam setiap entry key-value key adalah string dan value harus berupa tipe data primitive. Preferences hampir sama dengan Bundles, namun preferences bersifat persisten sedangkan bundles tidak. Tiga pilihan API untuk mengambil preferences, yaitu Workshop Struktur dan Pemakaian Teknologi Game 135 • getPreferences from within your Activity, to access activity specific preferences • getSharedPreferences from within your Activity or other application Context, to access application-level preferences • getDefaultSharedPreferences, on PreferencesManager, to get the shared preferences that work in concert with Android’s overall preference framework Penggunaan Preference Semua fungsi get… yang ada pada Preference akan mengembalikan sebuah object dimana isi dari object tersebut dapat dimanipulasi oleh suatu editor melalui perintah putXXX… dan getXXX untuk meletakkan atau mengambil data container Preference. Gambar 50 Penggunaan Preference

7.2.2 Files

Android menggunakan konstruksi file yang sama dengan apa yang ada pada aplikasi Java. File dapat disimpan pada memori utama perangkat internal storage atau pada memori yang lebih besar seperti SD Card external storage. File juga dapat diperoleh dari jaringan. Workshop Struktur dan Pemakaian Teknologi Game 136 File disimpan dalam media penyimpanan perangkat bersama-sama dengan sumber daya aplikasi lain seperti ikon, gambar, music, dll yang dinamakan resource files.

7.2.3 Databases

Pengenalan Android menggunakan program tertanam standalone yang dinamakan sqlite3, yang dapat digunakan untuk : • create a database, • define SQL tables, • indices, • queries, • views, • triggers • Insert rows, • delete rows, • change rows, • run queries dan • administer a SQLite database file. Menggunakan SQLite 1. SQLite mengimplementasikan standar SQL-92. 2. Memiliki dukungan trigger dan dapat melakukan query yang cukup kompleks 3. Tidak mendukung referential integrity constraints. Bagaimana membuat database SQLite Cara pertama : Workshop Struktur dan Pemakaian Teknologi Game 137 public static SQLiteDatabase.openDatabase String path, SQLiteDatabase.CursorFactory factory, int flags Parameters path : to database file to open andor create factory : an optional factory class that is called to instantiate a cursor when query is called, or null for default flags : to control database access mode Returns : the newly opened database Throws : SQLiteException if the database cannot be opened Open the database according to the flags OPEN_READWRITE, OPEN_READONLY, CREATE_IF_NECESSARY. Sets the locale of the database to the the systems current locale. Cara kedua : SQLiteDatabase db = this.openOrCreateDatabasemyfriendsDB, MODE_PRIVATE, null; where the assumed prefix for the database stored in the devices ram is: datadataCURRENT_namespacedatabases. For instance if this app is created in a namespace called “cis493.sql1”, the full name of the newly created database will be: “datadatacis493.sql1databasesmyfriendsDB”. Workshop Struktur dan Pemakaian Teknologi Game 162 Workshop 11 Databases

A. Tujuan

1. Memahami pengertian SQL Database 2. Memahami penggunaan SQL Database

B. Tugas Pendahuluan

1. Pelajari cara pembuatan database di Android

C. Percobaan

a. Percobaan 1 : Membuat table dan insert field pada Android

Langkah 1: Buat project Android baru pada Eclipse Langkah 2: Tambahkan statement berikut pada main.xml ? xml version = 1.0 encoding = utf-8 ? RelativeLayout xmlns:android = http:schemas.android.comapkresandroid android:layout_width = fill_parent android:layout_height = fill_parent android:orientation = vertical TextView android:id = +idtxtFinish android:layout_width = wrap_content android:layout_height = wrap_content android:layout_centerHorizontal = true android:layout_centerVertical = true android:text = stringhello TextView Workshop Struktur dan Pemakaian Teknologi Game 163 android:id = +idtxtMulai android:layout_width = wrap_content android:layout_height = wrap_content android:layout_alignLeft = +idtxtFinish android:layout_below = +idtxtFinish android:layout_marginTop = 48dp android:text = stringhello RelativeLayout Langkah 3 : Lengkapi statement berikut pada class java MainActivity package com.data; 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 DBAdapter { public static final String KEY_ROWID = _id ; public static final String KEY_ISEBN = isbn ; public static final String KEY_TITLE = title ; public static final String KEY_PUBLISHER = publisher ; public static final String TAG = DBAdapter ; private static final String DATABASE_NAME = books ; private static final String DATABASE_TABLE = titles ; private static final int DATABASE_VERSION = 1; private static final String DATABASE_CREATE = create table titles _id integer primary key autoincrement, + isbn text not null, title text not null, + publisher text not null; ; private final Context context ; private DatabaseHelper DBHelper ; private SQLiteDatabase db ; public DBAdapterContext ctx { Workshop Struktur dan Pemakaian Teknologi Game 164 this . context = ctx; DBHelper = new DatabaseHelper context ; } private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelperContext context{ super context, DATABASE_NAME , null , DATABASE_VERSION ; } public void onCreateSQLiteDatabase db{ db.execSQL DATABASE_CREATE ; } public void onUpgradeSQLiteDatabase 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 exist titles ; onCreatedb; } } public DBAdapter open throws SQLException { db = DBHelper .getWritableDatabase; return this ; } public void close { DBHelper .close; } public long insertTitleString isbn, String title, String publisher{ ContentValues initialValues = new ContentValues; initialValues.put KEY_ISEBN , isbn; initialValues.put KEY_TITLE , title; initialValues.put KEY_PUBLISHER , publisher; return db .insert DATABASE_TABLE , null , initialValues; } Workshop Struktur dan Pemakaian Teknologi Game 165 public boolean delete long rowid{ return db .delete DATABASE_TABLE , KEY_ROWID + = +rowid, null 0; } public Cursor getAllTitles{ return db .query DATABASE_TABLE , new String[]{ KEY_ROWID , KEY_ISEBN , KEY_TITLE , KEY_PUBLISHER }, null , null , null , null , null ; } public Cursor getTitle long rowId throws SQLException{ Cursor mCursor = db .query true , DATABASE_TABLE , new String[]{ KEY_ROWID , KEY_ISEBN , KEY_TITLE , KEY_PUBLISHER }, KEY_ROWID + = + rowId, null , null , null , null , null ; if mCursor = null { mCursor.moveToFirst; } return mCursor; } public boolean updateTitle long rowId, String isbn, String title, String publisher{ ContentValues args = new ContentValues; args.put KEY_ISEBN , isbn; args.put KEY_TITLE , title; args.put KEY_PUBLISHER , publisher; return db .update DATABASE_TABLE , args, KEY_ROWID + = + rowId, null 0; } } Workshop Struktur dan Pemakaian Teknologi Game 166 Langkah 4 : Lakukan editing pada kode yang dicetak tebal berikut pada class AndroidManifest.xml: ? xml version = 1.0 encoding = utf-8 ? manifest xmlns:android = http:schemas.android.comapkresandroid package = com.data android:versionCode = 1 android:versionName = 1.0 uses-sdk android:minSdkVersion = 10 application android:icon = drawableic_launcher android:label = stringapp_name activity android:name = .DatabaseBukuActivity android:label = stringapp_name intent-filter action android:name = android.intent.action.MAIN category android:name = android.intent.category.LAUNCHER intent-filter activity application manifest Langkah 5 : Tekan F11 untuk mendebug aplikasi pada emulator Android Langkah 6 : Maka akan muncul outputnya Workshop Struktur dan Pemakaian Teknologi Game 167 Langkah 7 : Database akan langsung dibuat, buka SQLiteStudio browser : Workshop Struktur dan Pemakaian Teknologi Game 168

b. Percobaan 2 : Membuat database dengan SQLHelper