
L P TRÌNH J2ME CHO THI T B DI ĐNGẬ Ế Ị Ộ
L P TRÌNH J2ME CHO THI T B DI ĐNGẬ Ế Ị Ộ
PH N 4Ầ
PH N 4Ầ
Bãi rác c a anh ^_^ủ

2
5. Record Management System (RMS)
5. Record Management System (RMS)
MIDP không s d ng h th ng file đ l u tr d li u. Thay vào đó MIDP l u toàn b thông ử ụ ệ ố ể ư ữ ữ ệ ư ộ
tin vào non-volatile memory (dung l ng vùng nh ) b ng h th ng l u tr g i là Record ượ ớ ằ ệ ố ư ữ ọ
Management System (RMS).
RMS là h th ng đc t ch c và qu n lý d i d ng các record (b n ghi). M i b n ghi có ệ ố ượ ổ ứ ả ướ ạ ả ỗ ả
th ch a b t k lo i d li u nào:ki u s nguyên, chu i ký t , m t nh và k t qu c a m t ể ứ ấ ỳ ạ ữ ệ ể ố ỗ ự ộ ả ế ả ủ ộ
Record là m t chu i (m ng) các byte. N u b n mã hoá d li u c a b n d i d ng nh phân ộ ỗ ả ế ạ ữ ệ ủ ạ ướ ạ ị
(binary), b n có th l u tr d li u b ng Record sau đó đc d li u t Record và khôi ph c ạ ể ư ữ ữ ệ ằ ọ ữ ệ ừ ụ
l i d li u ban đu. Kích th c d li u không đc vu t quá gi i h n qui đnh c a thi t b ạ ữ ệ ầ ướ ữ ệ ượ ợ ớ ạ ị ủ ế ị
di đng. RMS l u d li u g n nh m t c s d li u, bao g m nhi u dòng, m i dòng l i ộ ư ữ ệ ầ ư ộ ơ ở ữ ệ ồ ề ỗ ạ
có m t s đnh danh duy nh t. ộ ố ị ấ
M t t p các b n ghi(RecordStore) là t p h p các Record đc s p x p có th t . M i ộ ậ ả ậ ợ ượ ắ ế ứ ự ỗ
Record không th đng đc l p mà nó ph i thu c vào m t RecordStore nào đó, các thao tác ể ứ ộ ậ ả ộ ộ
trên Record ph i thông qua RecordStore ch a nó. Khi t o ra m t Record trong RecordStore, ả ứ ạ ộ
Record đc gán m t s đnh danh ki u s nguyên g i là Record ID. Record đu tiên đc ượ ộ ố ị ể ố ọ ầ ượ
t o ra s đc gán Record ID là 1,s tăng thêm 1 cho các Record ti p theo. Record ID không ạ ẽ ượ ẽ ế
là ch m c (index), các thao tác xóa Record trong RecordStore s không tính toán l i các ỉ ụ ẽ ạ
Record ID c a các Record hi n có cũng không thay đi Record ID c a các Record đc t o ủ ệ ổ ủ ượ ạ
m i, ví d : xóa record id 3, thêm m t record m i s có id là 4. Data là m t dãy các byte đi ớ ụ ộ ớ ẽ ộ ạ
di n cho d li u c n l u.ệ ữ ệ ầ ư
Tên đc dung đ phân bi t các RecordStore trong b các MIDlet (MIDlet suite). MIDlet ượ ể ệ ộ
suite là t p các MIDlet có chung không gian tên (name space), chia s cùng tài nguyên (nh ậ ẻ ư
RecordStore), các bi n tĩnh (static variable) trong các l p và các MIDlet này s đc đóng ế ớ ẽ ượ
gói trong cùng m t file khi tri n khai. N u ng d ng c a b n ch có m t MIDlet thì các ộ ể ế ứ ụ ủ ạ ỉ ộ
RecordStore đc s d ng cũng phân bi t l n nhau b ng các tên. Tên c a RecordStore có ượ ử ụ ệ ẫ ằ ủ
th dài đn 32 ký t Unicode và là duy nh t trong m t MIDlet suite.ể ế ự ấ ộ

3
Các v n đ liên quan đn RMSấ ề ế
Các v n đ liên quan đn RMSấ ề ế
H n ch v kh năng l u tr c a thi t b di đng : ạ ế ề ả ư ữ ủ ế ị ộ Dung l ng vùng nh ượ ớ
(non-volatile memory) dành riêng cho vi c l u tr d li u trong RMS thay đi tùy ệ ư ữ ữ ệ ổ
theo thi t b di đng. Đc t MIDP yêu c u r ng các nhà s n xu t thi t b di đng ế ị ộ ặ ả ầ ằ ả ấ ế ị ộ
ph i dành ra vùng nh có kích th c ít nh t 8K cho vi c l u tr d li u trong ả ớ ướ ấ ệ ư ữ ữ ệ
RMS. Đc t không nêu gi i h n trên cho m i Record. RMS cung c p các API đ ặ ả ớ ạ ỗ ấ ể
xác đnh kích th c c a m i Record, t ng dung l ng c a RecordStore và kích ị ướ ủ ỗ ổ ượ ủ
th c còn l i c a vùng nh này. Do đó trong quá trình phát tri n các ng d ng ướ ạ ủ ớ ể ứ ụ
J2ME b n ph i cân nh c trong vi c s d ng vùng nh này.ạ ả ắ ệ ử ụ ớ
T c đ truy xu t d li u :ố ộ ấ ữ ệ Các thao tác trên vùng nh này s ch m h n nhi u khi ớ ẽ ậ ơ ề
truy xu t d li u trên b nh RAM. Gi ng nh t c đ đc c ng và t c đ đc ấ ữ ệ ộ ớ ố ư ố ộ ọ ổ ứ ố ộ ọ
t RAM c a máy tính. Trong k thu t l p trình ph i th ng xuyên cache d li u ừ ủ ỹ ậ ậ ả ườ ữ ệ
và các thao tác liên quan đn RMS ch th c hi n t p trung m t l n (lúc kh i đng ế ỉ ự ệ ậ ộ ầ ở ộ
hay đóng ng d ng)ứ ụ .
C ch lu ng an toàn :ơ ế ồ N u RecordStore ch đc s d ng b i m t MIDlet, ế ỉ ượ ử ụ ở ộ
không ph i lo l ng vì RMS s dành riêng m t Thread đ th c hi n các thao tác ả ắ ẽ ộ ể ự ệ
trên RecordStore. Tuy nhiên n u có nhi u MIDlet và Thread cùng chia s m t ế ề ẻ ộ
RecordStore thì ph i chú ý đn k thu t l p trình Thread đ đm b o không có s ả ế ỹ ậ ậ ể ả ả ự
xung đt d li uộ ữ ệ

4
Các hàm API trong RMS (1)
Các hàm API trong RMS (1)
RecordStore không có hàm kh i t o.ở ạ
RecordStore Class: javax.microedition.rms.RecordStore
static RecordStore openRecordStore(String recordStoreName, boolean createIfNecessary) :
M m t Recordstore, có tham s t o Record store n u nó ch a t n t i. ở ộ ố ạ ế ư ồ ạ
Ví d : chụ duy nhỉt 1 đi t ng RecordStore đc t o m c dù m nhi u l n cùng 1 tênấ ố ượ ượ ạ ặ ở ề ầ
private RecordStore rs = null;
static final String REC_STORE = "db_1";
private void db(String str) {
System.err.println("Msg: " + str);
} }
public void openRecStore() {
try {
// Create record store if it does not exist
rs = RecordStore.openRecordStore(REC_STORE, true );
}
catch (Exception e) {
db(e.toString());
} }
V i tham s true, hàm s t o m t RecordStore n u nó ch a t n t i.ớ ố ẽ ạ ộ ế ư ồ ạ

5
Các hàm API trong RMS (2)
Các hàm API trong RMS (2)
void closeRecordStore() : Đóng RecordStore
Ví d :ụ
private RecordStore rs = null;
public void closeRecStore() {
try{
rs.closeRecordStore();
}
catch (Exception e) {
db(e.toString());
} }
static void deleteRecordStore(String recordStoreName) : Xóa RecordStore
static String[] listRecordStores() : Danh sách các RecordStore trong MIDlet suite, tr v ả ề
mng các chu i là tên c a RecordStore, n u không có RecordStore nào thì tr v null ả ỗ ủ ế ả ề
Ví d :ụ
public void deleteRecStore() {
if (RecordStore.listRecordStores() != null){
try {
RecordStore.deleteRecordStore(REC_STORE);
}
catch (Exception e) {
db(e.toString());
}
}}

