Untuk anda yang pemula dalam Flash/Actionscript 3, maupun yang sudah sering menggunakan Flash/Actionscript 3, pasti sempat berfikir, mungkinkah bisa membuat sebuah desktop application yang dapat menyimpan data pada portable database (database yang tidak perlu diinstall / dirunning pada computer klien/target)?
Sebelum ada Flash Air, Flash/Actionscript hanya berkembang dan berjalan pada web browser. Dan browsernya pun tidak asal browser tapi browser web yang sudah terinstall flash player. Flash/Actionscript ini pun tidak dapat sama sekali mengakses local komputer kita , tidak terdapat fasilitas database karena memang kemampuan Flash/Actionscript hanya sebatas pada plugin web browser sebagai web application.
Hal ini akan lebih merepotkan developer saat mereka mensetting aplikasi flash mereka agar berjalan pada computer klien, karena harus install localhost, install database mysql, dan merunning keduanya sebagai service, atau merunning keduanya saat startup.
BAGAIMANA MEMBUAT AGAR FLASH KITA DAPAT BEKERJA DENGAN DATABASE?
Mungkinkah bisa membuat sebuah aplikasi dengan Flash/Actionscript yang hanya dengan sekali klik maka aplikasi langsung terinstall, langsung jadi, langsung jalan, tanpa setting atau install module lain. Tentu hal ini akan mempermudah klien saat mereka ingin menginstallnya sendiri bukan?
Seiring dengan berkembangnya teknologi, maka Adobe Corp kemudian mengembangkan sebuah lingkungan AIR yang mampu membuat Flash/Actionscript menjadi tidak hanya berjalan sebagai web application tetapi mampu berkembang sangat jauh menjadi Dekstop Application.
Dengan menjadi Dekstop Application, maka aplikasi yang dibuat dengan Flash/Actionscript mampu berjalan layaknya Desktop Application seperti memodifikasi folder/file, membuat file pada hardisk, membuat shortcut di desktop bahkan menyimpan data pada database local.
Nah, yang akan kita bahas pada tutorial kali ini adalah bagaimana penggunaan portable database / local database pada Flash/Actionscript?
Portable database adalah sebuah database yang tidak perlu diinstall pada computer klien. Tidak perlu berjalan sebagai services atau sebagainya. Portable database ini hanyalah sebuah flat file / single file yang tidak ada korelasinya dengan module atau service apapun dalam computer.
Flash Air mengadopsi salah satu teknologi database SQL yang Free, Open Source dan Portable yaitu SQLite. Canggih bukan?
Kita tidak akan membahas apa itu SQLite, siapa yang menciptakan, bagaimana perkembangannya, tetapi kita akan focus kepada bagaimana kolaborasi Actionscript dengan Portable database ini pada lingkungan AIR.
LALU PACKAGE APA SAJA YANG KITA BUTUHKAN?
Actionscript menyediakan package yang dapat kita gunakan untuk pengolahan database portable SQLite ini yaitu package flash.data.
Package flash.data memiliki banyak sekali class untuk SQL. Tapi sebagai pengetahuan dasar, kita perlu mengenal 3 class sebagai berikut:
-flash.data.SQLConnection
Class ini digunakan untuk koneksi kedalam database, membuka database dan membuat database.
-flash.data.SQLStatement
Class ini digunakan untuk mengeksekusi sql query.
-flash.data.SQLResult
Class ini digunakan untuk pengolahan hasil dari eksekusi sql query seperti query untuk menyeleksi semua data dalam database.
Nah, dalam proses pemanggilan fungsi class dari package flash.data tadi, ataupun dalam proses pengelolaan database, pasti ada event event tertentu yang perlu kita handle. Sehingga dalam penkodean ini kita tidak hanya menggunakan package flash.data saja, tetapi juga package flash.events.
Di dalam package flash.events, kita menggunakan beberapa class diantaranya:
-flash.events.SQLEvent
Digunakan untuk event saat SQLConnection atau SQLStatement bekerja dengan sukses
-flash.events.SQLErrorEvent
Digunakan saat event dari SQLConnection maupun SQLStatement gagal.
-flash.events.SQLUpdateEvent
Digunakan untuk event event seperti saat INSERT, UPDATE, DELETE data dari database.
Yang diatas ini adalah package flash.events. Dalam running aplikasi pasti ada saat-saat tertentu terjadi error. Nah, pada bagian error ini kita memerlukan satu package lagi, yaitu package flash.errors.
Package flash.errors yang dapat kita gunakan dalam kaitannya dengan database SQLite adalah sebagai berikut:
-flash.errors.SQLError
-flash.errors.SQLErrorOperation
KEMUDIAN APA ITU ASYNCHRONOUS DAN SYNCHRONOUS?
Flash /Actionscript menyediakan dua mode eksekusi database SQLite yaitu mode Asynchronous dan Synchronous. Kalo dalam bahasa indonesianya mode tidak sinkron (tidak berurutan) dan mode sinkron (berurutan) :)
Berikut merupakan penjelasannya:
a.Asynchronous Mode
Mode Asyncronous merupakan eksekusi bersama sama/tidak berurutan. Misalnya anda ingin mengeksekusi dua buah fungsi, maka dengan mode Asynchronous eksekusi terhadap dua fungsi tersebut dapat dilakukan secara bersamaan.
Contoh:
conn.openAsync(dbFile);
trace(“selamat dating di MeTu”);
Dengan mode Asynchronous, maka dua buah line code di atas akan berjalan bersama sama. Bisa dibilang method openAsync(dbFile) di atas akan berjalan dibackground bersamaan dengan trace(). Bisa dimerngerti bukan?
b.Synchronous Mode
Mode Synchronous merupakan eksekusi secara berurutan. Program tidak akan berjalan ke kode berikutnya sebelum selesai mengeksekusi line code yang sedang diproses. Maka bisa dibilang proses eksekusinya berurutan.
Contoh:
conn.open (dbFile);
trace(“selamat dating di MeTu”);
Dengan mode default seperti diatas, maka 2 line code tersebut di atas tidak akan berjalan secara bersama sama melainkan secara berurutan. Fungsi trace() tidak akan tereksekusi sebelum open(dbFile) selesai dieksekusi.
Mudah dipahami kan?
SEKARANG MARI KITA PRAKTEK
Kita akan mempraktekan membuat database dan membuat table. Berikut merupakan pejelasan praktek kita.
a.Membuat database
Pertama:: Buatlah sebuah project flash dengan type Adobe Air.
Ingat ini adalah Adobe Flash-Air, bila anda hanya punya flash player saja tanpa Air tentu aplikasi tidak dapat berjalan. Untuk itu terlebih dahulu downloadlah AIR dari situ Adobe di sini {{-----AIR ADOBE DOWNLOAD-----}}
Kedua:: Simpan project flash air anda ini.
Kita akan membuat sebuah file database portable kan, maka kita harus menyimpan fla kita terlebih dahulu agar file database yang dibuat tadi bisa langsung diletakkan di samping fla yang sudah kita simpan.
Ketiga:: Buatlah GUI seperti gambar berikut ini.
Lihat gambar 1:
Pada gambar, saya membuat 3 buah komponen, yaitu komponen TextInput, Button, dan TextArea masing masing saya berikan instance name seperti pada gambar.
Keempat:: Ketikan source code nya.
Saya telah mengcopy ke pastebin seperti berikut ini
Nah, terlebih dahulu kita akan mencoba untuk mengimport package – package yang kita butuhkan, seperti flash.data, flash.events.SQLErrorEvent, flash.events.SQLEvent.
Tiga package diatas adalah package penting dalam manipulasi database.
Nah, karena saya ingin fungsi berjalan saat button di click, berarti kita perlu menambahkan package baru yaitu flash.events. Tapi jangan khawatir, package ini muncul otomatis saat kita memberikan event variable pada fungsi yang kita buat.
Selain itu saya juga ingin membuat database file yang dibuat nanti diletakkan pada lokasi yang sama dengan lokasi fla. Sehingga dari sini kita perlu mendefinisikan lokasi untuk fla kita. Maka kita juga membutuhkan package lain yang berhubungan dengan file dan path yaitu package flash.filesystem.
Terlebih dahulu kita membuat koneksi untuk SQLite kita.
var conn:SQLConnection = new SQLConnection();
Kemudian kita memberikan event untuk open dan error database
conn.addEventListener(SQLEvent.OPEN, openHandler);
conn.addEventListener(SQLErrorEvent.ERROR, errorHandler);
berikutnya kita akan mengambil nama database yang diketikan user dan memberikan path supaya database file kita disimpan di tempat yang sama dengan aplikasi fla kita.
var folder:File = File.applicationDirectory;
var dbFile:File = folder.resolvePath(namaDatabase.text);
File.applicationDirectory digunakan untuk mendapatkan path dari file fla tempat kita tersimpan.
terakhir, kita akan memberikan metode Asynchronous untuk membuka/membuat database.
conn.openAsync(dbFile);
Fungsi openAsync() digunakan untuk membuat file bila file belum ada dan membuka file database bila file telah ada.
Bila anda ingin menggunakan metode synchronous, maka tinggal mengganti saja menjadi:
conn.open (dbFile);
Sangat mudah bukan, coba eksekusi kode, masukan nama database, tekan tombol create database, dan lihat folder dimana tempat anda menyimpan file fla. Pasti akan terdapat file baru yang berektensi .db
b.Membuat table dalam database
Pertama:: buatlah sebuah project air.
Kedua:: buatlah gui seperti pada gambar berikut ini.
Lihat gambar 2:
Keempat:: ketikan source codenya.
Hampir sebagian besar kode diatas telah dijelaskan. Hanya beberapa saja yang belum yaitu:
conn.open(dbFile);
Ini merupakan synchronous method, karena saya ingin agar aplikasi membuka/membuat database terlebih dahulu sebelum mengeksekusi sql query untuk membuat tabel, jadi bisa dibilang berurutan.
Untuk mengeksekusi sql query, kita diharuskan mengimport package ini.
//digunakan untuk execute query
import flash.data.SQLStatement;
Mudah bukan? kode kode nya juga sangat gampang di baca. Silahkan anda debug, kemudian ketikan nama table, lalu click tombol buat tabel, dan lihat, tabel yang sudah anda ketikan telah masuk kedalam databaseAnda.db.
Ada sedikit pertanyaan, lalu bagaimana cara membuka databaseAnda.db ini?
Perlu saya ulang bahwa Flash-Air menggunakan SQLite opensource, free, and portable database. Sehingga anda dapat menggunakan SQLite manager atau SQLite browser untuk melihatnya. Banyak sekali SQLite tool yang tersebar di Internet. Salah satu yang saya rekomendasikan adalah:
SQLite Database Browser - Download http://sourceforge.net/projects/sqlitebrowser/
Demikian tutorial database pada Flash-Actionscript, semoga bermanfaat, silahkan anda download souce codenya. Saya menggunakan Adobe Flash Profesional CS6 tetapi juga saya sediakan untuk source code versi CS5.