欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

j2me 入门路之---3 recordstore - 记录技术知识

更新时间: 2015-05-04 00:00:00 责任编辑: Author_N14

 

package com.sa.demo.rs; 

import javax.microedition.lcdui.Command; 
import javax.microedition.lcdui.CommandListener; 
import javax.microedition.lcdui.Display; 
import javax.microedition.lcdui.Displayable; 
import javax.microedition.lcdui.TextBox; 
import javax.microedition.lcdui.TextField; 
import javax.microedition.midlet.MIDlet; 
import javax.microedition.midlet.MIDletStateChangeException; 
import javax.microedition.rms.RecordStore; 
import javax.microedition.rms.RecordStoreException; 
import javax.microedition.rms.RecordStoreFullException; 
import javax.microedition.rms.RecordStoreNotFoundException; 
import javax.microedition.rms.RecordStoreNotOpenException; 

public class TestRS2 extends MIDlet implements CommandListener { 
private Command exitCommand, addCmd, delCmd, setCmd, getCmd; 
private Display display; 
private RecordStore rs; // 定义记录存储rs 
private TextBox showMsg; // 用于显示操作结果信息 
private String msg = ""; // 存放用于文本框显示的信息 

public TestRS2() { 

display = Display.getDisplay(this); 
showMsg = new TextBox("操作信息:", null, 512, TextField.ANY); 
exitCommand = new Command("退出", Command.EXIT, 1); 
addCmd = new Command("添加记录", Command.SCREEN, 1); 
delCmd = new Command("删除记录", Command.SCREEN, 1); 
setCmd = new Command("修改记录", Command.SCREEN, 1); 
getCmd = new Command("读取记录", Command.SCREEN, 1); 
showMsg.addCommand(exitCommand); 
showMsg.addCommand(addCmd); 
showMsg.addCommand(delCmd); 
showMsg.addCommand(setCmd); 
showMsg.addCommand(getCmd); 
showMsg.setCommandListener(this); 
if (OpenRS("myRS")) 
msg += "记录存储myRS打开成功"; 
else 
msg += "记录存储myRS打开失败"; 
} 

private boolean OpenRS(String rsName) { 
// TODO Auto-generated method stub 
try { 
rs = RecordStore.openRecordStore("rsName", true); 
return true; 
} catch (RecordStoreFullException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
return false; 
} catch (RecordStoreNotFoundException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
return false; 
} catch (RecordStoreException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
return false; 
} 

} 

protected void destroyApp(boolean arg0) throws MIDletStateChangeException { 
// TODO Auto-generated method stub 
if (CloseRS()) 
System.out.println("记录存储myRS关闭成功"); 
else 
System.out.println("记录存储myRS关闭失败"); 
} 

private boolean CloseRS() { 
// TODO Auto-generated method stub 
return false; 
} 

protected void pauseApp() { 
// TODO Auto-generated method stub 

} 

protected void startApp() throws MIDletStateChangeException { 
// TODO Auto-generated method stub 
showMsg.setString(msg); 
display.setCurrent(showMsg); 
} 

public void commandAction(Command c,Displayable d) { 
int recId; 
if (c == exitCommand) { 
try { 
destroyApp(false); 
} catch (MIDletStateChangeException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 
notifyDestroyed(); 
} 
else if (c == addCmd) { 
if ((recId = AddRec()) != -1) 
msg = "记录添加成功,记录号为 " + recId; 
else 
msg = "记录添加失败"; 
showMsg.setString(msg); 
} 
else if (c == delCmd) { 
if ((recId = DelRec()) != -1) 
msg = "记录删除成功,记录号为 " + recId; 
else 
msg = "记录删除失败"; 
showMsg.setString(msg); 
} 
else if (c == setCmd) { 
if ((recId = SetRec()) != -1) 
msg = "记录修改成功,记录号为 " + recId; 
else 
msg = "记录修改失败"; 
showMsg.setString(msg); 
} 
else if (c == getCmd) { 
msg = GetRec(); 
showMsg.setString(msg); 
} 
} 

public int DelRec() { 
int id, num; 
try { 
id = rs.getNextRecordID(); 
num = rs.getNumRecords(); 
} 
catch (RecordStoreException e) { 
        return -1;
} 
if (num >0) { 
for (int i=id-1; i>0; i--) { 
try { 
rs.deleteRecord(i); 
return i; 
} 
catch (RecordStoreException e) { } 
} 
} 
        return -1; 
    } 

private int AddRec() { 
// TODO Auto-generated method stub 
int id = -1; 
int recID = -1; 
try { 
id = rs.getNextRecordID();//添加记录 返回记录的位置 

} catch (RecordStoreNotOpenException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} catch (RecordStoreException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 
String data = "Data of Record :"+id; 
byte[] rec = data.getBytes(); 
try { 
recID = rs.addRecord(rec, 0, rec.length);//插入数据。 

} catch (RecordStoreNotOpenException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} catch (RecordStoreFullException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} catch (RecordStoreException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 
return recID ; 
} 
public int SetRec() { 
int id, num; 
try { 
id = rs.getNextRecordID(); 
num = rs.getNumRecords(); 
} 
catch (Exception e) { 
        return -1;
} 
        String rec; 
byte [] data; 
if (num >0) { 
for (int i=id-1; i>0; i--) { 
rec = "Modified Data of Record " + i; 
data = rec.getBytes(); 
try { 
rs.setRecord(i, data, 0, data.length); 
return i; 
} 
catch (RecordStoreException e) { } 
} 
} 
        return -1; 
    } 
    // 显示所有记录 
    public String GetRec() { 
int id, num; 
try { 
id = rs.getNextRecordID(); 
num = rs.getNumRecords(); 
} 
catch (RecordStoreException e) { 
        return null;
} 
        String rec = "记录存储中共有" + num + "条记录:"; 
byte [] data = null; 
if (num >0) { 
for (int i=1; i<id; i++) { 
try { 
int size = rs.getRecordSize(i); 
if (data == null || data.length < size) { 
data = new byte[size]; 
} 
rs.getRecord(i, data, 0); 
rec += "\n" + new String(data,0,size); 
} 
catch (RecordStoreException e) { 
} 
} 
} 
        return rec; 
    } 
// 打开(创建)记录存储 
} 
 
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2015-05-04 00:00:00
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/1709732/
本文WWW.DOC100.NET DOC100.NET版权所有。