您的位置:首页 > 其它

J2ME游戏:创建RecordStore对象

2010-05-16 20:22 225 查看
记录存储系统类在javax.microedition.rms包里,RecordStore类中包含相关应用方法。原则上在一个MIDlet中可以放置多个RecordStore,它的诸多特性如下:
  RecordStore由多条记录(Record)所组成。
  在MIDlet suite中每一个RecordStore的名称是唯一的,不能重复,而不同的MIDlet suite可以使用同名的RecordStore。
  创建RecordStore名称时,字母是区分大小写的,且名称字符串不能超过32个字符。
  同一个MIDlet suite中可以共享同一个RecordStore进行存取,不同的MIDlet suite不能存取同一个MIDlet suite。

  创建RecordStore对象

  创建RecordStore对象,有以下几个方法:
  l public static RecordStore
  openRecordStore
  (String recordStoreName,
  boolean createIfNecessary)
  throws RecordStoreException,
  RecordStoreFullException,
  RecordStoreNotFoundException

  打开一个名称为 recordStoreName的RecordStore,如果指定的RecordStore不存在,则跟据createIfNecessary来判断是否要创建一个新的RecordStore, createIfNecessary值若为true,则需要创建一个新的RecordStore。注意名称长度不能超过32个字符。
  l public void closeRecordStore()
  throws RecordStoreNotOpenException,
  RecordStoreException
  MIDlet要求关闭RecordStore时,直接调用本方法。
  l public static String[] listRecordStores()
  返回当前MIDlet suite所有RecordStore的名称。
  l public static void deleteRecordStore
  (String recordStoreName)
  throws RecordStoreException,
  RecordStoreNotFoundException
  删除指定名称的RecordStore记录存储。

  有关MIDlet RecordStore记录存储的创建、删除或RecordStore记录存储对象的取得,可以参考下列应用,通过示例7-1来了解如何去应用记录存储的打开或关闭。
  示例7-1
  /×
  基本的记录存储应用方法
  ×/
  import javax.microedition.midlet.×;
  import javax.microedition.lcdui.×;
  // 需要import的MIDlet的数据库记录应用的包
  import javax.microedition.rms.×;
  public class recordData1 extends MIDlet implements CommandListener
  {
  Display display;

  List list;
  Command okCommand;
  Command exitCommand;
  //创建记录存储对象
  RecordStore[ ] rs;
  Alert alert;
  public recordData1()
  {
  alert=new Alert("记录存储操作结果");
  display=Display.getDisplay(this);
  list=new List("开关记录存储列表", List.EXCLUSIVE);
  okCommand = new Command("确认", Command.OK, 2);
  exitCommand = new Command("离开", Command.EXIT, 2);
  list.append("创建RecordA", null);
  list.append("创建RecordB",null);
  list.append("查看全部记录存储",null);
  list.append("删除RecordA",null);
  list.append("删除RecordB",null);
  list.addCommand(okCommand);
  list.addCommand(exitCommand);
  list.setCommandListener(this);
  rs=new RecordStore[2];
  }
  public void startApp()
  {
  display.setCurrent(list);
  }
  public void pauseApp(){}
  public void destroyApp(boolean unconditional){}
  public void commandAction(Command cmd, Displayable disp)
  {
  if (cmd == okCommand)
  {
  String recordname="";
  String[] name=new String[num];
  //取得当前MIDlet打开的全部记录存储的名称
  name=rs[0].listRecordStores();
  for(int i=0;i
  recordname=recordname+name[i]+" ";
  switch(list.getSelectedIndex()){
  case 0:
  //要求建立第一个记录存储
  try{
  rs[0]=RecordStore.openRecordStore("RecordA",true);
  if(num<2 && !(recordname.indexOf("RecordA")!=-1?true:false))
  num++;
  }catch(Exception ex){}
  alert.setString("RecordA创建完成");
  break;
  case 1:

//要求建立第二个记录存储
  try{
  rs[1]=RecordStore.openRecordStore("RecordB",true);
  if(num<2 && !(recordname.indexOf("RecordB")!=-1?true:false))
  num++;
  }catch(Exception ex){}
  alert.setString("RecordB创建完成");
  break;
  case 2:
  alert.setString("查看当前所有记录存储:"+recordname);
  break;
  case 3:
  /×
  删除第一个记录存储,
  注意删除时一定要先将记录存储关闭
  ×/
  try{
  rs[0].closeRecordStore();
  RecordStore.deleteRecordStore("RecordA");
  num--;
  }catch(Exception ex){}
  alert.setString("RecordA删除完成");
  break;
  case 4:
  //进行删除第二个记录存储
  try{
  rs[1].closeRecordStore();
  RecordStore.deleteRecordStore("RecordB");
  num--;
  }catch(Exception ex){}
  alert.setString("RecordB删除完成");
  break;
  }
  alert.setTimeout(2000);
  display.setCurrent(alert, list);
  }
  else if(cmd == exitCommand){
  destroyApp(false);
  notifyDestroyed();
  }
  }
  }

运行结果如图7-3所示。



图7-3
  【说明】
  有关RecordStore记录存储的打开和关闭,这个示例中主要说明当MIDlet程序中已经开启RecordStore后,不管重复开启几次相同的记录存储,还是只能开一个,删除也是一样。不过在删除RecordStore时,要注意必须先将RecordStore关闭,才可以进行删除操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: