Langsung ke konten utama

Latihan J2ME RMS

Pada aplikasi J2ME juga mengenal database
Penyimpanan informasi/data pada perangkat mobile di J2ME dapat menggunakan dua cara yaitu: 
a. Menyimpan data pada suatu file yang diletakkan pada direktori res 
b. Menggunakan Record Management System (RMS)
Membuat sebuah file untuk penyimpanan database. Kelas  RecordStore  pada  RMS  berfungsi menyediakan  fitur  untuk  menyimpan,  mengupdate,  mengambil  dan  menghapus  data  pada perangkat  mobile.  Kelas  RecordStore  merepresentasikan sebuah lokasi penyimpanan data permanen. Satu RecordStore dapat digunakan oleh lebih dari satu MIDlet  baik  pada  saat  bersamaan  maupun terpisah.  Berdasarkan  spesifikasi  MIDP,  vendor perangkat mobile bertanggung jawab pada pemeliharaan integritas obyek RecordStore.

Untuk contoh bisa dicoding/ juga bisa copy-paste. Monggo!!!

import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextField;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.Displayable;
import javax.microedition.midlet.MIDlet;

import java.io.IOException;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import javax.microedition.lcdui.ChoiceGroup;

public class PolingWebMidlet  extends MIDlet implements CommandListener {
    private Form      form;
    private TextField tfName1, tfName2;
    private ChoiceGroup cgPoling;
    private Command   cmdRetrieve, cmdSave, cmdExit;
    private UserOptionRS userStore;
   
    public PolingWebMidlet() {
    userStore = new UserOptionRS();

    //tfName1  = new TextField("First Name :",  "", 15, TextField.ANY);
    //tfName2  = new TextField("Last Name :", "", 15, TextField.ANY);
        cgPoling =  new ChoiceGroup("Apakah Hoby anda : ", ChoiceGroup.EXCLUSIVE);
        cgPoling.append("Musik", null);
        cgPoling.append("Programmer", null);
        cgPoling.append("Teknisi", null);
        cgPoling.append("Marketing", null);
        cgPoling.setSelectedIndex(0, true);

    cmdSave     = new Command("Pilih",     Command.SCREEN, 1);
    cmdRetrieve = new Command("Lihat", Command.SCREEN, 2);
    cmdExit     = new Command("Exit",     Command.EXIT,   1);

    Form form = new Form("Hoby terbanyak : ");
    //form.append(tfName1);
    //form.append(tfName2);
        form.append(cgPoling);

    form.addCommand(cmdSave);
    form.addCommand(cmdRetrieve);
    form.addCommand(cmdExit);

    form.setCommandListener(this);
    Display.getDisplay(this).setCurrent(form);
  }

  protected void startApp() {}

  protected void pauseApp() {}

  protected void destroyApp(boolean force) {}

  public void commandAction(Command c, Displayable d) {
    if (c == cmdSave) {
      saveOption();
      //tfName1.setString("");
      //tfName2.setString("");
                cgPoling.setSelectedIndex(0, true);
    } else if (c == cmdRetrieve) {
      Alert a = new Alert("Hasil Poling: ");
      a.setTimeout(Alert.FOREVER);
      a.setString(retrieveOption());
      Display.getDisplay(this).setCurrent(a);
    } else if (c == cmdExit) {
    userStore.close();
      notifyDestroyed();
    }
    }
    private String retrieveOption() {
  String list="", data;
        int musik=0, programmer=0, teknisi=0, marketing=0;
    try{
    for(int i=1; i<=userStore.countRecords(); i++){
    ByteArrayInputStream bOptions = new ByteArrayInputStream(userStore.readOption(i));
      DataInputStream dOptions = new DataInputStream(bOptions);
        //list = list + dOptions.readUTF() + " " + dOptions.readUTF() + "\n";
        //list = list + dOptions.readUTF() + "\n";
        data = dOptions.readUTF();
        //if(dOptions.readUTF() != null){
            if(data.equals("Musik")){
                musik = musik + 1;
            }else if(data.equals("Programmer")){
                programmer = programmer + 1;
            }else if(data.equals("Teknisi")){
                teknisi = teknisi + 1;
            }else if(data.equals("Marketing")){
                marketing = marketing +1;
            }else{
               
            }
        //}
        dOptions.close();
      bOptions.close();
    }
        list = "Musik: "+ musik +"\nProgrammer: "+ programmer +"\nTeknisi: "+ teknisi +"\nMarketing: "+ marketing +"\n";
    } catch(IOException e) { e.printStackTrace(); }
    return list;
}

private void saveOption() {
    try {
ByteArrayOutputStream bOptions = new ByteArrayOutputStream();
  DataOutputStream dOptions = new DataOutputStream(bOptions);
  //dOptions.writeUTF(tfName1.getString());
  //dOptions.writeUTF(tfName2.getString());
                int a = cgPoling.getSelectedIndex();
                dOptions.writeUTF(cgPoling.getString(a));
  userStore.writeOption(bOptions.toByteArray());
  dOptions.close();
  bOptions.close();
    } catch(IOException e) { e.printStackTrace(); }
  }

}

Dan harus membuat userOptionRS.java untuk databasenya.

import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;

public class UserOptionRS {

  private String storeName = "Poling";
  private RecordStore rsUserOption;
  private byte[] currentUserOption;
  public UserOptionRS() {
  try {
    rsUserOption = RecordStore.openRecordStore(storeName, true);
  } catch(RecordStoreException e) {
  e.printStackTrace();
  }
}
  int countRecords(){
  int numRecords;
  numRecords = 0;
  try {
  numRecords =  rsUserOption.getNumRecords();
  } catch(RecordStoreException e) {
  e.printStackTrace();
  }
  return numRecords;
  }
  public byte[] readOption(int rowID) {
  try {
        currentUserOption = rsUserOption.getRecord(rowID);
    } catch(RecordStoreException e) {
   e.printStackTrace();
  }
  return currentUserOption;
 }

  public void writeOption(byte[] option) {
  try {
      rsUserOption.addRecord(option, 0, option.length);
    } catch(RecordStoreException e) {
   e.printStackTrace();
  }
  currentUserOption = option;
 }
  public void close() {
  try {
    rsUserOption.closeRecordStore();
    //rsUserOption.deleteRecordStore(storeName);
    } catch(RecordStoreException e) {
   e.printStackTrace();
  }
 }
}

Komentar

Postingan populer dari blog ini

Apa itu API

Bagaimana membuat aplikasi atau website dengan performa yang baik? Bagaimana membuat website yang mudah dikembangkan di berbagai platform? Bagaimana mengintegrasikan website dengan aplikasi yang berbeda bahasa pemrograman? Jawabannya adalah dengan membuat API. Untuk membuat API, arsitektur yang paling populer yaitu RESTful API.   Pada tutorial kali ini saya akan sharing bagaimana membuat RESTful API menggunakan node.js, express, dan MySQL secara step by step. Api itu RESTful API? RESTful API  merupakan implementasi dari API  ( Application Programming Interface ). REST (REpresentational State Transfer) adalah suatu arsitektur metode komunikasi yang menggunakan protocol HTTP untuk pertukaran data dan metode ini sering diterapkan dalam pengembangan aplikasi. Mungkin terdengar rumit tapi sebenarnya tidak. Tujuannya untuk menjadikan system dengan performa yang baik, cepat, dan mudah untuk dikembangkan ( scale ) terutama dalam pertukaran dan komunikasi data...

Latihan J2ME ChoiceGroup Tampil

import javax.microedition.lcdui.*; import javax.microedition.midlet.*;   public class Midlet_8 extends MIDlet implements CommandListener {     private Display display;     private Form frmInput;     private ChoiceGroup cgPilihan;     private TextField nama;     private Command cmdKeluar;     private Command cmdTampil;     private CommandListener listener;     private StringItem siPilih;     //private Alert alert;     public Midlet_8 () {  }     public void startApp() {         //Form         frmInput = new Form("Form Input Nama");         nama = new TextField("Nama: ", null, 35, TextField.ANY);         frmInput.append(nama);         cgPilihan = new ChoiceGroup("Pilih Jurusan : ", Choice.POPUP);         cgPilihan.append("Teknik Inf...
tugasAlgoLanjut HITUNG LUAS PERSEGI Nama kelompok : Aditya Dwi Saputra (111 0511 003) Syamsul Amin (111 0511 048) Studi Kasus Pada kesempatan kali ini kelompok kami ingin membuat aplikasi yang sederhana untuk menghitung luas persegi panjang. Yang terdiri dari: ADT (Abstract Data type), Struct, fungsi, array. Pseudecode mulai mendeklarasikan typedef int jumlah struct{ jumlah hasiluas; }persegi; menginisialisasi fungsi luas void luas (jumlah p, jumlah l){ persegi.hasiluas=p*l; } melakukan perulangan sebanyak data array input data persegi ke array input panjang input lebar pemanggilan fungsi luas tutup perulangan cetak data yang tersimpan didalam array finish Source Code #include //deklarasi ADT typedef int jumlah; //deklarasi struct struct{ jumlah hasiluas; }persegi; //Fungsi penghitung luas. void luas (jumlah p, jumlah l){ persegi.hasiluas = p * l; } //Fungsi utama. int main() { //Pendeklarasian variabel yang dibutuhkan. ...