Hôm nay mình đã hiểu phần nào về kỹ thuật lưu dữ liệu trong bản ghi của ngôn ngữ J2ME. Mình lập topic này mong anh em hãy chia sẻ những gì mình hiểu để chúng ta đều phát triển.
//==========================================================================//
Thứ nhất : Bản ghi của J2Me(RecordStore) gồm 2 trường như hình bên dưới :
Trường chỉ số chứa các chỉ số của bản ghi bắt đầu từ bản ghi số 1.
Trường Nội dung chứa nội dung gồm mảng các bytes(Dữ liệu dạng byte);
Khi ta truy xuất dữ liệu của bản ghi nàochỉ cần truy suất tới chỉ số tương ứng với nó là đc.
////////////////////////////////////////////////////////////////////////
Vì vậy khi thao tác ghi dữ liệu vào Ngăn chứa bản ghi ta phải làm 4 bước :
+ Mở bản ghi(để ghi)
+ Chuyển dữ liệu sang dạng byte
+ Ghi dữ liệu vào bản ghi cần ghi
+ Đóng bản ghi
vậy là đã ghi xong . Thao tác đọc dữ liệu ở bản ghi bạn sẽ làm như sau:
+ Mở bản ghi để đọc
+ Đọc bản ghi ở chỉ số nào thì tương ứng nội dung(dạng byte ) ở đó xuất hiên.
+ Đóng bản ghi
//=======================================================================
Đóng bản ghi để không bị bắt lỗi khi thao tác dữ liệu.
//========================================================================
xong bước này bạn đã hiểu bản ghi hoạt động chưa ? Mình khẳng định chẳng thằng nào hiểu cả. nếu không xem nó chạy.
Giờ chúng ta hãy Xem xét và đánh giá ví dụ dưới đây sẽ rõ .
Ví dụ :
Tạo 1 Form chứa user,pass , với 2 nút đăng ký, đăng nhập.
khi nhập nội dung vào ta sẽ nhấn vào đăng ký để đăng ký.
Sau khi đăng ký rồi dữ liệu sẽ tự động được lưu vào bản ghi bắt đầu từ chỉ số 1.
//==========================================================================//
Thứ nhất : Bản ghi của J2Me(RecordStore) gồm 2 trường như hình bên dưới :
Trường chỉ số chứa các chỉ số của bản ghi bắt đầu từ bản ghi số 1.
Trường Nội dung chứa nội dung gồm mảng các bytes(Dữ liệu dạng byte);
Khi ta truy xuất dữ liệu của bản ghi nàochỉ cần truy suất tới chỉ số tương ứng với nó là đc.
////////////////////////////////////////////////////////////////////////
Vì vậy khi thao tác ghi dữ liệu vào Ngăn chứa bản ghi ta phải làm 4 bước :
+ Mở bản ghi(để ghi)
+ Chuyển dữ liệu sang dạng byte
+ Ghi dữ liệu vào bản ghi cần ghi
+ Đóng bản ghi
vậy là đã ghi xong . Thao tác đọc dữ liệu ở bản ghi bạn sẽ làm như sau:
+ Mở bản ghi để đọc
+ Đọc bản ghi ở chỉ số nào thì tương ứng nội dung(dạng byte ) ở đó xuất hiên.
+ Đóng bản ghi
//=======================================================================
Đóng bản ghi để không bị bắt lỗi khi thao tác dữ liệu.
//========================================================================
xong bước này bạn đã hiểu bản ghi hoạt động chưa ? Mình khẳng định chẳng thằng nào hiểu cả. nếu không xem nó chạy.
Giờ chúng ta hãy Xem xét và đánh giá ví dụ dưới đây sẽ rõ .
Ví dụ :
Tạo 1 Form chứa user,pass , với 2 nút đăng ký, đăng nhập.
khi nhập nội dung vào ta sẽ nhấn vào đăng ký để đăng ký.
Sau khi đăng ký rồi dữ liệu sẽ tự động được lưu vào bản ghi bắt đầu từ chỉ số 1.
- Code:
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.rms.RecordStore;
/**
* @author Hand In Hand -- DTVTK7A- DH CNTT- TT Thai Nguyen
*/
public class login extends MIDlet implements CommandListener {
Display di;
Form fr;
TextField t1,t2;
Command c1,c2,c3;
RecordStore rs;
String st1,st2,st3,st4;
int i,j,k;
StringItem it;
public login()
{
//=============================================================//
di = Display.getDisplay(this);
fr = new Form("Đăng nhập hệ thống !");
//=============================================================//
t1 = new TextField("User","",50,TextField.ANY);
t2 = new TextField("Pass","",50,TextField.ANY);
fr.append(t1);
fr.append(t2);
//=============================================================//
it = new StringItem("Chúc mừng :","");
fr.append(it);
//=============================================================//
c1 = new Command("Đăng nhập",Command.CANCEL,1);
c2 = new Command("Đăng ký",Command.BACK,2);
fr.addCommand(c1);
fr.addCommand(c2);
fr.setCommandListener(this);
//==============================================================//
}
public void startApp() {
di.setCurrent(fr);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
//===============================================================//
public void openRestore(boolean b)
{
try{
rs = RecordStore.openRecordStore("data", b);
}
catch(Exception e){}
}
//==============================================================//
public void closeRestore()
{
try {
rs.closeRecordStore();
}catch(Exception e) {}
}
//================================================================//
public void commandAction(Command c, Displayable d) {
if(c==c2)
{
try {
openRestore(true);//mo de ghi
st1 = t1.getString();
st2 = t2.getString();
rs.addRecord(st1.getBytes(), 0, st1.length());// ghi du lieu byte
rs.addRecord(st2.getBytes(),0,st2.length());
closeRestore(); //dong
it.setText("Đã ghi dữ liệu thành công !");
}
catch(Exception e){}
}
else
if(c==c1)
{
try{
openRestore(false);// mo de doc
int s = rs.getNumRecords();
for(i=1;i<s;i++)
{
st3 = new String(rs.getRecord(i));// doc chi so o day
st4 = new String(rs.getRecord(i+1));
if(t1.getString().equals(st3)&&t2.getString().equals(st4))
{
it.setText("Bạn đã đăng nhập thành công !");
break;
}
}
if(i==s)
it.setText("Đăng nhập không thành công !");
closeRestore(); //dong recoed
}
catch(Exception e){}
}
}
}