RMS (Record Management System) 是 J2ME 唯一的持久化儲存機制,廣泛用於高分紀錄、遊戲存檔等場景。本文提供一套完整的 Appointment 資料封裝類別與 RMS 操作工具類,涵蓋單一記錄的位元組序列化、RecordStore 的增刪改查、關鍵字索引搜尋,並附帶 MIDlet 整合範例。
設計為可序列化的資料容器,包含 7 個欄位(int1、int2、long1、str1~3、WroteFlag),其中 str1 作為保留關鍵字欄位供索引搜尋。
toBytes():使用 DataOutputStream 將欄位依序寫入位元組陣列。initAppointment(byte[]):使用 DataInputStream 從位元組陣列還原欄位。靜態方法封裝所有常用操作,簡化 MIDlet 呼叫:
| 方法 | 功能 |
|---|---|
addRecord(name, ...) | 新增記錄,自動序列化並寫入 |
getNumOfRecords(name) | 取得記錄總數 |
getRecords(name) | 一次讀取所有記錄回傳 Appointment[] |
getRecord(name, id) | 依記錄編號讀取單筆 |
getIndex(name, keyword) | 依關鍵字 str1 搜尋記錄編號 |
setRecord(name, id, ...) | 更新指定編號記錄 |
註:範例為簡化流程未對外拋出例外,實際產品建議依 Java 例外機制處理。
String rsName = "MyRMS";
protected void startApp() throws MIDletStateChangeException {
if (RMS.getNumOfRecords(rsName) == 0) {
for (int i = 0; i < 6; i++) {
RMS.addRecord(rsName, RMS.Int1, i, RMS.Long1,
Integer.toString(i), RMS.Str2, "1234567890123456789", false);
}
}
}
啟動時若資料庫為空,自動寫入 6 筆測試資料,僅使用 int2、str1(關鍵字)、str3 欄位。
透過 Appointment + RMS 雙類別架構,開發者能以類資料庫的方式操作 RMS,專注於業務邏輯而非底層位元組流處理。此模式易於擴充欄位、支援關鍵字查詢,適合中小型 J2ME 專案的持久化需求。