???? 本程序主要利用在J2ME MIDP的RMS功能,演示了如何通过RecordStore对象进行存储数据,并实现一个通讯录程序,程序的主要代码如下:
AddressBook.java的源代码如下:
import javax.microedition.midlet.*;import javax.microedition.lcdui.*;import javax.microedition.rms.*;public class AddressBook extends MIDlet implements CommandListener{ private Display display=null; Command search=null; Command quit=null; Command delete=null; Command addnow=null; Command edit=null; Command mainmenu=null; List menu=null; Form ui_form=null; StringItem si=null; TextField name=null; TextField phone=null; TextField nameForEdit=null; RecordStore recordStore=null;//声明记录储存 public AddressBook() { display=Display.getDisplay(this); //定义Display变量 quit=new Command("关闭",Command.SCREEN,3);//定义关闭按钮 search=new Command("查找",Command.SCREEN,2);//定义查询按钮 delete=new Command("删除",Command.SCREEN,2);//定义删除按钮 addnow=new Command("增加",Command.SCREEN,2);//定义增加按钮 edit=new Command("修改",Command.SCREEN,2);//定义修改按钮 mainmenu=new Command("主菜单",Command.SCREEN,2);//定义主菜单按钮 //记录储存初始化 try { recordStore=RecordStore.openRecordStore("address",true); } catch(RecordStoreException rse) { rse.printStackTrace(); } } public void startApp() { menu=new List("电话薄...",List.IMPLICIT); menu.append("1.查询",null); menu.append("2.增加",null); menu.append("3.删除",null); menu.append("4.修改",null); menu.append("5.关闭",null); menu.setCommandListener(this); display.setCurrent(menu); } void searchScreen() //查询用户界面 { ui_form=new Form("电话薄查询"); name=new TextField("查询姓名","",50,0); ui_form.append(name); ui_form.addCommand(search); ui_form.addCommand(quit); ui_form.setCommandListener(this); display.setCurrent(ui_form); } void addScreen() { ui_form=new Form("添加"); name=new TextField("姓名","",50,0); ui_form.append(name); phone=new TextField("电话号码","",50,0); ui_form.append(phone); ui_form.addCommand(addnow); ui_form.addCommand(quit); ui_form.setCommandListener(this); display.setCurrent(ui_form); } void editScreen() { ui_form=new Form("修改"); nameForEdit=new TextField("需要修改的姓名","",50,0); ui_form.append(nameForEdit); name=new TextField("姓名","",50,0); ui_form.append(name); phone=new TextField("电话号码","",50,0); ui_form.append(phone); ui_form.addCommand(edit); ui_form.addCommand(quit); ui_form.setCommandListener(this); display.setCurrent(ui_form); } void deleteScreen() { ui_form=new Form("删除"); name=new TextField("姓名","",50,0); ui_form.append(name); ui_form.addCommand(delete); ui_form.addCommand(quit); ui_form.setCommandListener(this); display.setCurrent(ui_form); }public void pauseApp(){ menu=null;}public void destroyApp(boolean unconditional){ menu=null; notifyDestroyed();}public void commandAction(Command c,Displayable d){ if(c==quit) { try { close(); } catch(RecordStoreException rse) { rse.printStackTrace(); } destroyApp(true); }else if(c==search){ String temp_search=name.getString(); address_search(temp_search); }else if(c==edit){ String temp_nameForEdit=nameForEdit.getString(); String temp_name=name.getString(); String temp_phone=phone.getString(); address_edit(temp_nameForEdit,temp_name,temp_phone); }else if(c==mainmenu){ startApp();}else if (c==delete){ String temp_delete=name.getString(); address_del(temp_delete);}else if(c==addnow){ String temp_name=name.getString(); String temp_phone=phone.getString(); address_add(temp_name,temp_phone);}else //其他事件,根据list选项调用个界面{ List down=(List)display.getCurrent(); switch(down.getSelectedIndex()) { case 0: searchScreen();break; case 1: addScreen();break; case 2: deleteScreen();break; case 3: editScreen();break; case 4: destroyApp(true);break; }}}void address_search(String address){ String temp=" "; String phone_number; String person_name; String check_name=""; int size=address.length(); try { RecordEnumeration re= recordStore.enumerateRecords(null,null,false); //enumeration通过项目集允许对例程进行重复调用。 ui_form=new Form("查询结果"); while(re.hasNextElement()) { String name1=new String(re.nextRecord()); try { person_name=name1.substring(0,name1.indexOf("?")); } catch(Exception ef) { person_name="请检查姓名是否正确"; ef.printStackTrace(); } if(person_name.length()>=size) { check_name=person_name.substring(0,size); } if(check_name.equals(address)) { try{ phone_number=name1.substring(name1.indexOf("?")+1); } catch(Exception e) { phone_number=""; } temp=temp+"\n姓名.."+person_name+"\n电话.."+phone_number; } } //}if(temp.equals(" ")){ temp="没有找到......";}ui_form.append(temp);ui_form.addCommand(quit);ui_form.addCommand(mainmenu);ui_form.setCommandListener(this);display.setCurrent(ui_form);//} }catch(RecordStoreNotOpenException rsnoe){ rsnoe.printStackTrace();}catch(InvalidRecordIDException irid){ irid.printStackTrace(); }catch(RecordStoreException rse){ rse.printStackTrace();}} void address_del(String address){ String temp=" "; String phone_number; String person_name; int id; int del_id=0; try { RecordEnumeration re= recordStore.enumerateRecords(null,null,false); ui_form=new Form("删除结果"); while(re.hasNextElement()) { id=re.nextRecordId(); String name1=new String(recordStore.getRecord(id)); try { person_name=name1.substring(0,name1.indexOf("?")); //搜索截取特定的字符串 } catch(Exception ef) { person_name="请检查姓名是否正确"; ef.printStackTrace(); } if(person_name.equals(address)) { del_id=id; } } if(del_id!=0) { recordStore.deleteRecord(del_id); temp="成功地删除一条记录"; } else { temp="所指定的记录不在电话薄内"; }} catch(Exception e) { } ui_form.append(temp); ui_form.addCommand(quit); ui_form.addCommand(mainmenu); ui_form.setCommandListener(this); display.setCurrent(ui_form); } void address_add(String address,String phone) { String data=address+"?"+phone; System.out.println(data); try { byte[] b=data.getBytes(); recordStore.addRecord(b,0,b.length); ui_form=new Form("添加成功"); ui_form.append("成功地添加一条记录"); ui_form.addCommand(quit); ui_form.addCommand(mainmenu); ui_form.setCommandListener(this); display.setCurrent(ui_form); } catch(RecordStoreException rse) { rse.printStackTrace(); } } void address_edit(String addressForEdit,String address,String phone) { int id=1; int edit_id=0; String person_name; String temp="error"; try { RecordEnumeration re= recordStore.enumerateRecords(null,null,false); ui_form=new Form("修改"); while(re.hasNextElement()) { id=re.nextRecordId(); String name1=new String(recordStore.getRecord(id)); try { person_name=name1.substring(0,name1.indexOf("?")); } catch(Exception ef) { person_name="请检查姓名是否正确"; } if(person_name.equals(addressForEdit)) { edit_id=id; } } if(edit_id!=0) { String data=address+"?"+phone; byte[] b_data=data.getBytes(); recordStore.setRecord(edit_id,b_data,0,b_data.length); temp="成功地修改一条记录"; } else { temp="要修改的记录不在电话薄内"; } } catch(Exception e) { e.printStackTrace(); } ui_form.append(temp); ui_form.addCommand(quit); ui_form.addCommand(mainmenu); ui_form.setCommandListener(this); display.setCurrent(ui_form); } //关闭记录储存 public void close()throws RecordStoreNotOpenException,RecordStoreException { recordStore.closeRecordStore(); } }
?