Record Management System (RMS). 5.[r]
(1)Giáo viên : Tr nh Th Vân Anhị ị
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Ầ
(2)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 tồ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 Record ằ ệ ố ữ ọ
Management System (RMS)
RMS h th ng đệ ố ượ ổc t ch c qu n lý dứ ả ướ ại d ng 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 k t qu c a m t ể ứ ấ ữ ệ ể ố ỗ ự ộ ả ế ả ủ ộ
Record m t chu i (m ng) 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 khơi ph c ể ữ ữ ệ ằ ọ ữ ệ ụ
l i d li u ban đ u Kích thạ ữ ệ ầ ước d li u không đữ ệ ược vu t 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 nh t ộ ố ị ấ
M t t p b n ghi(RecordStore) t p h p Record độ ậ ả ậ ợ ượ ắc s p x p có th t M i ế ứ ự ỗ
Record không th đ ng đ c l p mà ph i thu c vào m t RecordStore đó, thao tác ể ứ ộ ậ ả ộ ộ
trên Record ph i thơng qua RecordStore ch a Khi t o m t Record RecordStore, ả ứ ộ
Record gán m t s đ nh danh ki u s nguyên g i Record ID Record đ u tiên độ ố ị ể ố ọ ầ ược t o s đạ ẽ ược gán Record ID 1,s tăng thêm cho Record ti p theo Record ID không ẽ ế
là ch m c (index), thao tác xóa Record RecordStore s khơng tính tốn l i ỉ ụ ẽ
Record ID c a Record hi n có khơng thay đ i Record ID c a Record đủ ệ ổ ủ ượ ạc t o m i, ví d : xóa record id 3, thêm m t record m i s có id Data m t dãy byte đ i ụ ộ ẽ ộ
di n cho d li u c n l u.ệ ữ ệ ầ
Tên dung đ phân bi t RecordStore b MIDlet (MIDlet suite) MIDlet ể ệ ộ
suite t p MIDlet có chung khơng gian tên (name space), chia s tài nguyên (nh ậ ẻ
RecordStore), bi n tĩnh (static variable) l p MIDlet s đế ẽ ược đóng gói m t file tri n khai N u ng d ng c a b n ch có m t MIDlet ộ ể ế ứ ụ ủ ỉ ộ
RecordStore đượ ục s d ng phân bi t l n b ng tên Tên c a RecordStore có ệ ẫ ằ ủ
(3)3 Các v n đ liên quan đ n RMSấ ề ế
Các v n đ liên quan đ n RMSấ ề ế
H n ch v kh 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 RMS thay đ i tùy ệ ư ữ ữ ệ ổ
theo thi t b di đ ng Đ c t MIDP yêu c u r ng nhà s n xu t thi t b di đ ng ế ị ộ ặ ả ầ ằ ả ấ ế ị ộ
ph i dành vùng nh có kích thả ớ ước nh t 8K cho vi c l u tr d li u ấ ệ ư ữ ữ ệ
RMS Đ c t không nêu gi i h n cho m i Record RMS cung c p API đ ặ ả ớ ạ ỗ ấ ể
xác đ nh kích thị ướ ủc c a m i Record, t ng dung lỗ ổ ượng c a RecordStore kích ủ
thước l i c a vùng nh Do q trình phát tri n ng d ng ạ ủ ớ ể ứ ụ
J2ME b n ph i cân nh c vi c s d ng vùng nh này.ạ ả ắ ệ ụ ớ
T c đ truy xu t d li u :ố ộ ấ ữ ệ Các thao tác vùng nh s ch m h n nhi u ớ ẽ ậ ơ ề
truy xu t d li u b nh RAM Gi ng nh t c đ đ c c ng 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à 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 RMS s dành riêng m t Thread đ th c hi n thao tác ả ắ ẽ ộ ể ự ệ
RecordStore Tuy nhiên n u có nhi u MIDlet Thread chia s m t ế ề ẻ ộ
RecordStore ph i ý đ n k thu t l p trình Thread đ đ m b o khơng có s ả ế ỹ ậ ậ ể ả ả ự
(4)4 Các hàm API RMS (1)
Các hàm API 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 ch a t n t i ộ ố ế
Ví d : chụ ỉ nhất đ i tố ượng RecordStore đượ ạc t o m c dù m nhi u l n 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()); } }
(5)5 Các hàm API RMS (2)
Các hàm API 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 RecordStore MIDlet suite, trả ề v mảng chu i tên c a RecordStore, n u khơng có RecordStore tr v null ỗ ủ ế ả ề
Ví d :ụ
public void deleteRecStore() {
if (RecordStore.listRecordStores() != null){ try {
RecordStore.deleteRecordStore(REC_STORE); }
catch (Exception e) {
db(e.toString()); }
(6)29 Searching with RecordFilter –
Searching with RecordFilter – SearchStreamsSearchStreams (2) (2)
public void writeTestData() {
String[] names = {"Lan : Lop C04 CNTT HVCNBCVT", "Thu : K45 CNTT Dai Hoc Bach Khoa HN",
"Hoai Anh : K39 QTDN Truong Kinh Te Quoc Dan",
"Yen Chi : Lop Anh Ngu Truong Dai Hoc Ngoai Ngu HN"}; boolean[] sex = {true, false, true, true};
int[] rank = {3, 0, 1, 2};
writeStream(names, sex, rank); }
private void searchRecordStore() {
try { // Record store is not empty
if (rs.getNumRecords() > 0) {// Setup the search filter with the user requested text SearchFilter search = new SearchFilter(tfFind.getString());
RecordEnumeration re =
rs.enumerateRecords(search, null, false);
(7)30 Searching with RecordFilter –
Searching with RecordFilter – SearchStreamsSearchStreams (3) (3)
ByteArrayInputStream strmBytes = new ByteArrayInputStream(re.nextRecord());
DataInputStream strmDataType = new DataInputStream(strmBytes); // Read Java data types from the above byte array
siMatch.setText(strmDataType.readUTF()); // Show matching result in stringItem component on form
search.searchFilterClose(); // Close record filter strmBytes.close(); // Close stream
strmDataType.close(); // Close stream re.destroy(); // Free enumerator } } }
catch (Exception e) { db(e.toString()); }