บทที่ 8 RMS (Record Management System)

Download Report

Transcript บทที่ 8 RMS (Record Management System)

RMS(Record
Management System)
อ.วิวฒ
ั น์
ชินนาทศิ รก
ิ ุล
RMS (Record Management
System)



เป็ นกลุมของคลาส
และอินเทอรเฟซ
สาหรับ
่
์
จัดการขอมู
้ ล ของ MIDP
ทาให้เราสามารถเขียน MIDlet เพือ
่ บันทึกขอมู
้ ล
ในลักษณะ persistent storage ได้
RMS จัดเตรียมคาสั่ งในการจัดการขอมู
้ ลไว้
ไดแก
แกไข
ลบ
้ ่ การอาน
่
้
โครงสรางของ
RMS
้



การจัดเก็บขอมู
้ ล จะนับเป็ นเรคคอรด
์ ในลักษณะ
Array of bytes
เรคคอรดจะเก็
บในฐานขอมู
้ ลทีเ่ รียกวา่ Record
์
Store ซึง่ เป็ นไฟลแบบไบนารี
์
การจัดเก็บขอมู
Record Store ขึน
้ มา
้ ลจะสราง
้
กอน
่ องการเก็
บ จัดเก็บลง
่ จากนั้นนาขอมู
้ ลทีต
้
อารเรย
บเป็ นเรคค
้ ่ งขอมู
้ ลจากอารเรย
์ ์ แลวส
์ ไปเก็
์
อรดใน
Record Store
์
โครงสรางของ
RMS (ตอ)
้
่


เมือ
่ มีการเพิม
่ เรคคอรดใหม
เข
ง Record
่ าไปยั
้
์
Stroe เรคคอรดที
่ จะมีคาคี
าเรคคอรด
่ ยประจ
์ เ่ พิม
์
์
(Record ID) อัตโนมัต ิ
โดยทีเ่ รคคอรดแรกจะ
์
มีคา่ Record ID เป็ น 1
คาสั่ งของ RMS ทีใ่ ช้จัดการกับขอมู
้ ล จะใช้
Record ID เพือ
่ ระบุเรคคอรดที
่ องการท
างาน
้
์ ต
ภาพแสดงโครงสรางการเก็
บขอมู
้
้ ล
ของ RMS
การทางานกับ Record Store

คลาสของ Record Store คือ RecordStore อยู่
ในแพ็กเกจ javax.microedition.rms
เมธอดทีใ่ ช้บอยๆของคลาส
่
RecordStore
ขัน
้ ตอนการทางานกับ Record
Store




สราง
Object ของ Record Store จากคลาส
้
RecordStore
เปิ ด Record Store
เขียนคาสั่ ง เพือ
่ เพิม
่ ลบ แกไข
เรคคอรด
้
์
ปิ ด Record Store
การเปิ ด Record Store


สราง
Object ของคลาส RecordStore เช่น
้
RecordStore rs;
เปิ ด Record Store ดวยเมธอด
้
openRecordStore() มีรป
ู แบบการใช้งานดังนี้
RecordStore.openRecordStore(dbname,
flag);
โดยที่
dbname เป็ นชือ
่ Record Store ทีต
่ องการ
้
เปิ ด
flag ระบได้ 2 คาคื
่ อ true , false
การเปิ ด Record Store (ตอ)
่


เมธอดหลายตัวของ RMS ตองเขี
ยนภายใตค
้
้ าสั่ ง
try {} และตรวจจับเหตุการณด
าสั่ ง catch {}
้
์ วยค
เมธอด openRecordStore() จะตรวจจับ
เหตุการณได
อ
่
์ ้ 3 อยางคื
RecordStoreFullException
RecordStoreNotFoundException
RecordStoreException
ตัวอยาง
การตรวจจับเหตุการณของเมธอด
่
์
openRecordStore()
try{
rs=RecordStore.openRecordStore(“topscore”
,false);
}catch(RecordStoreFullException e){
//ไมมี
าหรับเพิม
่ เรคคอรดใหม
่ ทวี่ างส
่
่
์
}catch(RecordStoreNotFoundException){
//ไมมี
่ องการเปิ
ด
่ ไฟล ์ Record Store ทีต
้
} catch(RecordStoreException e){
//เกิดความผิดพลาดอืน
่ ๆ
}
การเพิม
่ เรคคอรด
์



ขอมู
่ ะเก็บลงเรคคอรด
ในรู
ปแบบ
้ ลทีจ
้
่
์ ตองอยู
Array of byte ดังนั้นถาข
ปแบบ
้ อมู
้ ลไมอยู
่ ในรู
่
ดังกลาว
จาเป็ นตองแปลงหรื
อจัดเก็บในรูปแบบ
่
้
อารเรย
่
์ ก
์ อน
ตัวอยาง
่
String str=“Record Management System”;
byte[] data=str.getBytes();
เมือ
่ ไดข
้ อมู
้ ลในรูปแบบอารยเรย
้ ลไป
์ ์ ก็จะนาขอมู
เพิม
่ เรคคอรดใหม
่ ใน Record Store โดยใช้
์
เมธอด addRecord() เมธอดนี้มพ
ี ารามิเตอร ์ 3
ตัวคือ ชือ
่ อารเรย, ตาแหนงทีจ
่ ะนาขอมูลไปเก็บ
การเพิม
่ เรคคอรด
่
์ (ตอ)

try{
id=rs.addRecord(data, 0, data.length);
}catch(RecordStoreException e){
…….
}
เหตุการณที
่ ามารถตรวจจับเพิม
่ เติมของเมธอด
์ ส
addRecord() ไดแก
้ ่
RecordStoreNotOpenException
RecordStoreFullException
การอานเรคคอร
ด
่
์


การอานเรคคอ
ดจาก
Record Store จะกาหนดตัวแปร
่
์
แบบ Array of byte เพือ
่ ใช้เก็บขอมู
้ ล เช่น
byte[] data = new byte[100];
เมธอดทีใ่ ช้ในการอานข
อมู
่
้ ลของเรคคอรดคื
์ อ
getRecord() ซึง่ เขียนได้ 2 แบบคือ
1. มีพารามิเตอรตั
่ องการดึ
ง
์ วเดียว ไดแก
้ ่ Record ID ทีต
้
ขอมู
้ ล
try{
rs.getRecord(id);
}catch(){
…
}
การอานเรคคอร
ด
่
่
์ (ตอ)
2. มีพารมิเตอร ์ 3 ตัว ไดแก
้ ่ Record ID ที่
ตองการดึ
งขอมู
่ อารเรย
ั ขอมู
้
้ ล , ชือ
้ ล ,
์ ที
์ ร่ บ
ตาแหน่งเริม
่ ตนของข
อมู
่ องการ
้
้ ลในเรคคอรดที
้
์ ต
อาน
่
try{
rs.getRecord(id, data, 0);
}catch(){
…
}
เมือ
่ ไดข
้ อมู
้ ลมาเก็บในอารเรย
์ ์ ก็สามารถนา
ขอมู
้ ลไปใช้งาน คานวณ หรือแสดงผลตาม
ตองการได
การอานเรคคอร
ด
่
่
์ (ตอ)

เหตุการณที
่ ามารถตรวจจับเพิม
่ เติมของเมธอด
์ ส
getRecord() คือ
RecordStoreNotOpenException
InvalidRecordIDException
ArrayIndexOutOfBoundsException
การลบเรคคอรด
์

การลบเรคคอรดใน
Record Store จะใช้เมธอด
์
deleteRecord() โดยมีพารามิเตอร ์ 1 ตัวคือ
Record ID ทีต
่ องการลบเรคคอร
ด
้
์
try{
rs.deleteRecord(id);
}catch(){
…
}
การลบเรคคอรด
่
์ (ตอ)

เหตุการณที
่ ามารถตรวจจับเพิม
่ เติมของเมธอด
์ ส
deleteRecord() คือ
RecordStoreNotOpenException
InvalidRecordIDException
การแกไขเรคคอร
ด
้
์




คลาส Record Store ไมมี
่ คาสั่ งสาหรับแกไข
้
ขอมู
้ ลในเรคคอรดโดยตรง
์
วิธก
ี ารแกไข
จะใช้วิธน
ี าขอมู
้
้ ลใหม่ ไปเขียนทับ
ขอมู
้ ลเดิม
ถาต
ไขข
อมู
้ องการแก
้
้
้ ลเพียงบางส่วนของเรคคอรด
์
จะตองอ
านข
อมู
แลวแก
ไข
้
่
้ ลเก็บในอารเรย
่
้
้
์ ก
์ อน
ขอมู
่ แกไขเสร็
จแลวจึ
้ ลในอารเรย
้
้ งนาขอมู
้ ล
์ ์ เมือ
ในอารเรย
ยนใน Record Store ดวยเมธอด
้
์ ไปเขี
์
setRecord()
พารามิเตอรของเมธอด
setRecord() คลายกั
บ
้
์
การแกไขเรคคอร
ด
้
่
์ (ตอ)
String str = “new data”;
byte[] data=str.getBytes();
try{
rs.setRecord(id, data, 0, data.length);
}catch(RecordStoreException e){
…..
}
การแกไขเรคคอร
ด
้
่
์ (ตอ)

เหตุการณที
่ ามารถตรวจจับเพิม
่ เติมของเมธอด
์ ส
setRecord() คือ
RecordStoreNotOpenException
InvalidRecordIDException
RecordStoreFullException
การปิ ด Record Store

ใช้เมธอด closeRecordStore() โดยไมระบุ
่
พารามิเตอร ์ เช่น
try{
rs.closeRecordStore();
}catch(RecordStoreException e){
…..
}
ตัวอยาง
่

สราง
MIDlet เพือ
่ แสดงฟอรมส
้
้ ล
์ าหรับรับขอมู
ชือ
่ -สกุล และหมายเลขโทรศั พท ์ แลวจั
้ ดเก็บ
ขอมู
้ ลลง Record Store
เอกสารอางอิ
ง
้

เกง่ J2ME ให้ครบสูตร โดย ทรงเกียรติ ภาวดี