บทที่ 6 Record Management System
บทที่ 6 Record Management System
MIDlet Persistent Storage
ในการพัฒนาโปรแกรมต่างๆ
จำเป็นจะต้องมีระบบ สำหรับการจัดเก็บข้อมูล การทำงานต่างๆ หรือ ค่า config
ของโปรแกรม ซึ่งหากเป็นบน ระบบปฏิบัติการ Windows คุณจะสามารถใช้ การเก็บข้อมูล
ลงใน Text file หรือแม้กระทั่ง ลงใน ฐานข้อมูล
แต่สำหรับการเขียนโปรแกรมบนมือถือ
ที่รองรับกับ MIDP แล้ว ข้อมูลต่างๆที่คุณต้องการเก็บ จะสามารถบันทึก และถูกเรียกใช้ผ่านทาง
Record Management System (RMS) ซึ่งเป็นระบบจัดการ กับข้อมูล ที่เป็นแบบ
เรคคอร์ด ( Record) เช่นเดียว กับฐานข้อมูลอื่นๆ ที่จะเก็บข้อมูลไว้บนเรคคอร์ด
โดย RMS จะอยู่ในชุดของ
Package javax.microediton.rms และมีความสามารถในการแชร์ ข้อมูลให้กัน
ภายใน MIDlet suite เดียวกัน ,สามารถเรียง, กรองข้อมูลได้ ,มี API
ในการติดต่อสั่งงาน.

รูปที่ 48 แสดงโครงสร้างของ Record
Management System
ที่สัมพันธ์กับ MIDlet
RecordStore
ในการจัดเก็บข้อมูล (Record-เรคคอร์ด) ข้อมูลจะถูกทำการบันทึกไว้ใน RecordStore
(ที่เก็บเรคคอร์ด) โดยข้อมูลที่ถูกจัดเก็บไว้นั้น จะมีชื่อที่ไม่ซ้ำกัน ลักษณะของ
RecordStore จะประกอบด้วย
- ชื่อ
- หมายเลข
- จำนวนของ Record ที่อยู่ข้างใน
- เวลา
- ขนาดของแต่ละ Record
- ขนาดโดยรวมของทั้งหมด
- จำนวนพื้นที่ที่ยังเหลือ
- หมายเลขรุ่น
รูปที่ 49 แสดงโครงสร้างของ Record
Store
Record
เรคคอร์ดเป็นส่วนของข้อมูล ที่จะถูกเก็บข้อมูลไว้ ลักษณะของ เรคคอร์ด จะเป็น
อะเรย์ของไบต์ (array of bytes) โดยมี หมายเลข กำกับอยู่ด้วย (Record ID)
RMS and Exception
ในชุดของ javax.microediton.rms จะมี Class ที่ใช้ในการจัดการ ดังนี้
- RecordStore
- RecordComparator
- RecordEnumeration
- RecordFilter
- RecordListener
ส่วนของ Exception ต่างๆได้แก่
- InvalidRecordID
- RecordStoreException
- RecordStoreFullException
- RecordStoreNotFoundException
- RecordStoreNotOpenException
Opening Record Stores
วิธีในการเปิด Record Stores เพื่อจะใช้งาน สามารถทำได้โดย
public static RecordStore openRecordStore(String recordStoreName, boolean
createIfNecessary) throws RecordStoreException, RecordStoreFullException,
RecordStoreNotFoundException
ตัวอย่าง
RecordStore rs = RecordStore.openRecordStore("Address", true);
จะเป็นการเรียกเพื่อเปิด Record Store ที่ชื่อ Address หากไม่มี Record
Store ดังกล่าวอยู่ก่อนหน้า จะมีการสร้าง Record Store นี้ขึ้นมาใหม่ ให้โดยอัตโนมัติ
Closing/Removing Record Store
ในการปิด Record Store สามารถทำได้โดย
public void closeRecordStore()
และเมื่อต้องการลบ Record Store จะใช้
public void deleteRecordStore(String recordStoreName)
Listing RecordStore
เมื่อต้องการแสดงข้อมูลที่อยู่ใน Record Store ทั้งหมดสามารถทำได้โดย
public static String[] listRecordStores()
ตัวอย่าง
public String populateList() { String []stores = RecordStore.listRecordStores(); StringBuffer s = new StringBuffer(); if (stores != null) { for (int i = 0; i < stores.length; i++) { s.append(stores[i] + "\n"); } } else { s.append("no record store"); } return s.toString(); }
Getting RecordStore Information
หาขนาดของ Record Store (ในหน่วยของ Byte)
public int getSize()
หาขนาดของหน่วยความจำที่เหลือกสำหรับการสร้าง Record Store
public int getSizeAvailable()
หาค่าเวลาล่าสุด ที่มีการใช้งาน Record Store
public long getLastModified()
หาเวอร์ชั่นของ Record Store
public int getVersion()
Getting Record Information
หาขนาดของ Record
public int getRecordSize(ing recordID)
หาจำนวน Record ที่อยู่ใน Record Store
public int getNumRecords()
หาค่า ID ของ Record ถัดไป
public int getNextRecordID()
Adding Records
ในการเพิ่ม เรคคอร์ด สามารถทำได้โดยใช้ เมธอด addRecord
public int addRecord(byte[] data, int offset, int numByte)
โดยข้อมูลจะโดนแปลง ให้เป็น Byte ก่อนทำการใช้เมธอด
public void addNewRecord() {
String s = "Thanachart Numnonda";
byte[] data = s.getBytes();
try {
id = rs.addRecord(data, 0, data.length);
} catch (RecordStoreFullException ex) {
} catch (RecordStoreException ex) {
}
}
Retrieving Records
ในการดึงข้อมูลจาก เรคคอร์ดขึ้นมาแสดง สามารถใช้ เมธอด getRecord ได้สองรูปแบบ
คือ
public byte[] getRecordID(int recordID)
และ
public int getRecord(int recordID, byte[] buffer, int offset)
ตัวอย่าง
try {
byte []data = new byte[rs.getRecordSize(id)];
rs.getRecord(id, data, 0);
String s = new String(data);
} catch (RecordStoreException ex) {
}
Deleting and Replacing Records
สำหรับการลบเรคคอร์ด สามารถกระทำได้ผ่านทาง เรคคอร์ด
public void deleteRecord(int recordID)
ในการ แก้ไขข้อมูลของ เรคคอร์ด สามารถกำได้ได้โดยใช้ เมธอด setRecord
public void setRecord(int recordID, byte[] newData, int offset, int numBytes)
ในบทนี้ เราได้ให้ความรู้เกี่ยวกับ
ลักษณะ การเก็บข้อมูลและจัดการกับข้อมูล ซึ่งมีประโยชน์ เป็นอันมาก ในการใช้พัฒนาโปรแกรม
เพื่อให้เกิดความเข้าใจมากยิ่งขึ้น ให้คุณทดลองโปรแกรมในภาคปฏิบัติ จะได้เห็นถึงการใช้งานจริง
|