• Tidak ada hasil yang ditemukan

DATABASE

Dalam dokumen Modul. Pemrograman Aplikasi Android (Halaman 50-62)

SQLite

Aplikasi android yang menggunakan SQLite sebagai sarana penyimpanan data, tidak akan lepas dengan salah satu public class abstract yaitu SQLiteOpenHelper. Class tersebut akan membantu dalam mengatur pembuatan database dan manajemen versi database.

Contoh projek aplikasi android dengan menggunakan SQLite:

1. Buat projek dengan nama DemoDBSql.

2. Buatlah class baru yang digunakan untuk pembuatan struktur database dengan nama DataKamus.java, lalu tambahkan extends ke SQLiteOpenHelper:

package com.latihan.db;

public class DataKamus extends SQLiteOpenHelper {

}

Maka, akan muncul warning untuk menambahkan method yang ada dalam SQLiteOpenHelper.

Akan muncul lagi warning untuk menambahkan constructor yang sesuai dengan SQLiteOpenHelper

Kemudian sesuaikan sintaks hingga menjadi seperti ini:

package com.latihan.db;

import android.content.ContentValues;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

public class DataKamus extends SQLiteOpenHelper{

private static final String DB_NAME = "dbkamus";

public static final String INGGRIS = "inggris";

public static final String INDONESIA = "indonesia";

public DataKamus(Context context, String name, CursorFactory factory,int version) {

super(context, DB_NAME, null, 1 );

// TODO Auto-generated constructor stub }

@Override

public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub }

@Override

public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { // TODO Auto-generated method stub

Hapus parameter lainnya

hingga hanya menyisakan

parameter Context saja

db.execSQL("DROP TABLE IF EXISTS kamus");

db.execSQL("CREATE TABLE if not exists kamus (id INTEGER PRIMARY KEY AUTOINCREMENT, inggris TEXT, indonesia TEXT);");

}

public void generateData (SQLiteDatabase db){

ContentValues cv = new ContentValues();

cv.put(INGGRIS, "run");

3. Lengkapi file main.xml hingga membentuk tampilan seperti ini:

4. Lengkapi file Activity menjadi seperti di bawah ini:

package com.latihan.db;

public class DemoDBSql extends Activity { private SQLiteDatabase db = null;

private Cursor kamusCursor = null;

private DataKamus dKamus = null;

public static final String INDONESIA = "indonesia";

public static final String INGGRIS = "inggris";

Id:

@+id/editEnglish

Id:

@+id/txtIndonesia

Id:

@+id/btnTranslate android:onClick=”get Terjemahan”

EditText editInggris;

TextView txtIndo;

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

@Override

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

dKamus = new DataKamus(this);

txtIndo = (TextView) findViewById(R.id.txtIndonesia);

}

public void getTerjemahan(View view){

String result = "";

String englishWord= editInggris.getText().toString();

kamusCursor = db.rawQuery("SELECT ID, INGGRIS, INDONESIA FROM kamus WHERE INGGRIS='"+englishWord+"' order BY INGGRIS", null);

if (kamusCursor.moveToFirst()){

result = kamusCursor.getString(2);

for (; !kamusCursor.isAfterLast();kamusCursor.moveToNext()){

result = kamusCursor.getString(2);

5. Maka hasil yang nanti ditampilkan adalah seperti berikut:

Connect to Server (HTTP Connection)

Berikut adalah contoh sederhana membuat aplikasi Android dengan memanfaatkan metode HTTP Connection.

1. Sebelum membuat aplikasi, buatlah terlebih dahulu database dengan nama “dblokasi”.

2. Buatlah satu tabel pada database tersebut yang berisi data ID, LONGITUDE, LATITUDE dan LOKASI. Dan isikan data table tersebut.

3. Kemudian buatlah satu file PHP yang akan menjadi web service dari aplikasi android untuk menampilkan data, dengan sintaks program sebagai berikut:

<?php

$koneksi=mysql_connect("localhost","root","")

or die ("<h4 align=center> GAGAL KONEKSI KE SERVER DATABASE!</h3>");

mysql_select_db("dblokasi", $koneksi)

or die ("<h4 align=center> GAGAL KONEKSI KE DATABASE!</h3>");

$query = mysql_query("select longitude, latitude, lokasi from tbl_posisi",

$koneksi)

or die ("Errorquery");

$rows = array();

while ($r = mysql_fetch_assoc($query)){

$rows[] = $r;

}

$data = "{posisi:".json_encode($rows)."}";

echo $data;

?>

Coba jalankan file PHP tersebut pada browser hingga menampilkan data yang ada.

4. Buat juga satu file PHP yang digunakan untuk menambah data ke server, seperti yang ada di bawah ini:

<?php

$longitude = $_GET['longi'];

$latitude = $_GET['lat'];

$lokasi = $_GET['lok'];

$koneksi = mysql_connect('localhost', 'root', '') or die ("Cannot connect db");

mysql_select_db('map_point', $koneksi) or die ("cannot find database");

if ($longitude == null || $latitude == null || $lokasi == null){

$query = "INSERT INTO tbl_posisi (longitude, latitude, lokasi) VALUES ('".$longitude."','".$latitude."','".$lokasi."')";

$result = mysql_query($query, $koneksi) or die ("errror query");

echo "SUCCESS";

}

?>

5. Sekarang buatlah projek android (sebagai contoh disini dengan nama DemoLokasiServer).

6. Buatlah satu file XML baru untuk membuat interface tampil data dengan nama file tampil_layout.xml seperti di bawah ini:

Dan interface untuk menambahkan data ke server dengan nama file tambah_layout.xml seperti di bawah ini:

7. Kemudian buatlah file JAVA baru dengan meng-extend class Activity untuk memproses penampilan data, kemudian lengkapi sintaks program hingga menjadi seperti di bawah ini:

TampilDataActivity.java package com.dyah.latihan;

import java.io.BufferedReader;

import java.io.InputStream;

import java.io.InputStreamReader;

import org.apache.http.HttpResponse;

Id: txtHasilJson

Id: btnBack

Id: strLokasi

Id: editLongitude

Id : editLatitude

Id: btnSimpan

import org.apache.http.client.HttpClient;

public class TampilDataActivity extends Activity { private JSONObject jObject;

private String xResult;

private String url = "http://192.168.1.1/lihatposisi.php";

Button btnBack;

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

@Override

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

setContentView(R.layout.tampil_layout);

TextView txtResult = (TextView) findViewById(R.id.txtHasilJson);

btnBack = (Button) findViewById(R.id.btnMenuUtama);

btnBack.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) { finish();

private void parse(TextView txt) throws Exception{

jObject = new JSONObject(xResult);

JSONArray menuitemArray = jObject.getJSONArray("posisi");

String sRet="";

for (int i = 0; i<menuitemArray.length();i++){

sRet +=

menuitemArray.getJSONObject(i).getString("lokasi").toString()+" =

Gunakan IP computer untuk mendefinisikan

“localhost”

sRet += public String getRequest(String url){

String sRet="";

HttpClient client = new DefaultHttpClient();

HttpGet request = new HttpGet(url);

try {

HttpResponse respone = client.execute(request);

sRet = requested(respone);

} catch (Exception e) {

// TODO: handle exception

Toast.makeText(getApplicationContext(), "Errror : " + e.getMessage(), Toast.LENGTH_SHORT).show();

} return sRet;

}

//method untuk menerima data dari

8. Buatlah satu file JAVA lagi, kali ini untuk memproses penyimpanan data ke server seperti di bawah ini:

server

private static String requested(HttpResponse respone) { // TODO Auto-generated method stub

String result="";

try {

InputStream in = respone.getEntity().getContent();

BufferedReader buf = new BufferedReader(new InputStreamReader(in));

StringBuilder builder = new StringBuilder();

String line = null;

while ((line = buf.readLine()) != null){

builder.append(line + "\n");

}

in.close();

result = builder.toString();

} catch (Exception e) {

// TODO: handle exception result = "Error read data";

}

import org.apache.http.HttpResponse;

public class TambahDataActivity extends Activity{

private EditText longitude;

private EditText latitude;

private EditText lokasi;

private Button simpan_button;

private String url = "http://192.168.1.1/tambahposisi.php";

@Override

protected void onCreate(Bundle arg0) { // TODO Auto-generated method stub super.onCreate(arg0);

setContentView(R.layout.tambah_layout);

longitude = (EditText) findViewById(R.id.editLongitude);

latitude = (EditText) findViewById(R.id.editLatitude);

lokasi = (EditText) findViewById(R.id.strLokasi);

simpan_button = (Button) findViewById(R.id.btnSimpan);

simpan_button.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

// TODO Auto-generated method stub //semua

parameter yang akan dikirim harus di

encode supaya bisa terbaca oleh server dengan baik try {

String strLongitude =

URLEncoder.encode(longitude.getText().toString(), "utf-8");

String strLatitude =

URLEncoder.encode(latitude.getText().toString(), "utf-8");

String strLokasi =

URLEncoder.encode(lokasi.getText().toString(), "utf-8");

url += "?longi=" + strLongitude +"&lat=" + strLatitude +"&lok=" + strLokasi;

getHttpRequest(url);

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

} }

Toast.makeText(TambahDataActivity.this, url, Toast.LENGTH_SHORT).show();

HttpClient client = new DefaultHttpClient();

HttpGet request = new HttpGet(url);

try {

HttpResponse respones = client.execute(request);

Toast.makeText(TambahDataActivity.this, "Penambahan data:\n"

+ requested(respones), Toast.LENGTH_SHORT).show();

} catch (Exception e) {

// TODO: handle exception

Toast.makeText(TambahDataActivity.this, "gagal http request:

" +e.getMessage(), Toast.LENGTH_LONG).show();

} }

public String requested(HttpResponse respones) { String result= "";

try {

InputStream in = respones.getEntity().getContent();

BufferedReader buffer = new BufferedReader(new InputStreamReader(in));

StringBuilder builder = new StringBuilder();

String line = null;

while ((line = buffer.readLine()) !=

null){

builder.append(line +"\n");

}

in.close();

result = builder.toString();

} catch (Exception e) {

// TODO: handle exception result = "errrorrrrr";

}

// TODO Auto-generated method stub return result;

} });

} }

9. Pada file main.xml, hilangkan sintaks yang tidak diperlukan, hingga menjadi seperti ini:

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

<LinearLayout

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

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

</LinearLayout>

10. Kemudian, pada DemoLokasiServerActivity, lengkapi sintaks program hingga menjadi seperti ini:

public class MenuUtamaActivity extends ListActivity{

@Override

protected void onCreate(Bundle arg0) { // TODO Auto-generated method stub super.onCreate(arg0);

//array menu

String[] menu = new String[] {"Tambah Data Posisi","Tampil Data", "Exit"};

//array adapter for list view

this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, menu));

}

protected void onListItemClick(ListView l, View v, int position, long id) {

super.onListItemClick(l, v, position, id);

//get item

Object o = this.getListAdapter().getItem(position);

String pilihan = o.toString();

tampilMenu(pilihan);

}

protected void tampilMenu(String pilihan) { // TODO Auto-generated method stub try {

Intent i = null;

if (pilihan.equals("Tampil Data")){

i = new Intent(this, TampilDataActivity.class);

} else if (pilihan.equals("Exit")){

finish();

}

startActivity(i);

} catch (Exception e) {

// TODO: handle exception }

} }

11. Tampilan yang dihasilkan adalah sebagai berikut:

Dalam dokumen Modul. Pemrograman Aplikasi Android (Halaman 50-62)

Dokumen terkait