探索J2ME:使用记录管理系统

开发者在线 Builder.com.cn 更新时间:2002-10-14作者:BUILDER.COM 来源:

RecordStore类的运行

RecordStore类的运行过程很简单明了。你可以用静态RecordStore.openRecordStore方法打开一个已有的记录库,这会为这个指定名字的记录库返回一个RecordStore实例。如果你指定的记录库的名字不存在,该方法也可以创建一个以改名字命名的新的记录库(参见createIfNecessary参数)。使用getRecord方法你就可以通过记录ID来得到ID对应的记录。你还可以用addRecordsetRecord方法分别实现添加记录和更新记录的功能。当你完成了对记录库的操作,别忘了用closeRecordStore来关闭这个记录库。


关于记录ID的一个注释:
在Sun公司的标准实现(Sun’s reference implementation)中,给定记录的ID号与它的插入次序是相同的。记录库中第一个插入的记录以1为它的ID号,第二个插入的记录以2为ID号,以此类推。尽管这听起来似乎很方便,但是实际上并不总是如此。MIDP规范只要求每个记录都有一个ID号——ID号是如何创建的问题则留给平台的实现者。


RecordStore类的绝大多数方法都可以抛出一个或者多个RecordStoreException类型的例外。例外的子类和它们对应的意义如下所示:

  • InvalidRecordIDException例外,当某个被调用的方法涉及一个不存在的记录ID号(当读或者更新某个记录时)或者记录ID号无效(当添加记录时)时,就会抛出InvalidRecordIDException例外。
  • RecordStoreFullException例外,当RMS(记录管理系统)的存储器满时,就会抛出该例外。例如,用OpenRecordStore来打开一个指定名字的记录库时,即使没有更新记录库,它也有可能抛出RecordStoreFullException例外。
  • RecordStoreNotFoundException例外,当某个被调用的方法涉及到一个不存在的的记录库时,就会抛出该例外。如果指定名字的记录库不存在,OpenRecordStore也可以创建拥有该名字的记录库。该例外也可能从一个奇怪的地方抛出:CloseRecordStore方法。
  • RecordStoreNotOpenException例外,如果你试图访问一个尚未被打开的记录库(用OpenRecordStore方法打开记录库)时,就会抛出该例外。

最后,由于被处理的对象是二进制数据,记录库访问方法(getRecord、addRecordsetRecord)均把记录数据做为字节数组处理。你会发现——除非你有些喜欢被虐待——java.io软件包的流处理类,如ByteArrayInputStreamByteArrayOutputStreamDataInputStream、和DataOutputStream,使用起来并不可靠。

用户评论

  • 用户名
  • 评论内容