Java tutorial
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; 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.rms.RecordEnumeration; import javax.microedition.rms.RecordFilter; import javax.microedition.rms.RecordStore; import javax.microedition.rms.RecordStoreNotFoundException; public class FilterFieldsMIDlet extends MIDlet implements CommandListener { private Command exitCommand; private Display display; private String[] names = { "A", "B", "C", "D" }; private int[] chineseScore = { 74, 98, 89, 76 }; private int[] englishScore = { 67, 89, 89, 78 }; private int[] mathScore = { 80, 76, 80, 78 }; public FilterFieldsMIDlet() { display = Display.getDisplay(this); exitCommand = new Command("Exit", Command.EXIT, 1); } public void startApp() { TextBox aTextBox = new TextBox("Main", null, 256, TextField.ANY); RecordStore rs = null; byte[] nameEmail = null; boolean existingOrNot = false; boolean OK = true; existingOrNot = existing("aRS3"); if (existingOrNot) { try { rs = RecordStore.openRecordStore("aRS3", false); } catch (Exception e) { OK = false; } finally { if (OK) { aTextBox.setString("Ok"); } else { aTextBox.setString("not tOk"); } } } else { try { rs = RecordStore.openRecordStore("aRS3", true); } catch (Exception e) { OK = false; } finally { if (OK) { aTextBox.setString("Ok"); } else { aTextBox.setString("Not Ok"); } } } Student aStudent = null; if (OK) try { for (int i = 0; i < names.length; i++) { aStudent = new Student(); aStudent.write(names[i], chineseScore[i], englishScore[i], mathScore[i]); byte[] data = aStudent.changeToByteArray(); int recordID = aStudent.getRecordID(); if (recordID != -1) { rs.setRecord(recordID, data, 0, data.length); } else { recordID = rs.addRecord(data, 0, data.length); aStudent.setRecordID(recordID); } aStudent = null; } aTextBox.setString("Added"); } catch (Exception e) { aTextBox.setString("Failed"); } String result = ""; aStudent = new Student(); if (OK) try { byte[] data; int number = 0; RecordFilter rf = new averageFilter(); RecordEnumeration re = rs.enumerateRecords(rf, null, false); while (re.hasNextElement()) { int recordID = re.nextRecordId(); data = rs.getRecord(recordID); aStudent.changeFromByteArray(data); result += recordID + "\n" + "Name:" + aStudent.getName() + "\n" + aStudent.getChineseScore() + "\n" + aStudent.getEnglishScore() + "\n" + aStudent.getMathScore() + "\n"; number++; } result += number; aTextBox.setString(result); } catch (Exception e) { aTextBox.setString("Failed"); try { rs.closeRecordStore(); System.out.println("1.Closed."); RecordStore.deleteRecordStore("aRS3"); System.out.println("delete OK"); } catch (Exception x) { } } finally { try { if (rs != null) rs.closeRecordStore(); rs.deleteRecordStore("aRS3"); } catch (Exception e) { } } aTextBox.setString(result); aTextBox.addCommand(exitCommand); aTextBox.setCommandListener(this); display.setCurrent(aTextBox); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public boolean existing(String recordStoreName) { boolean existingOrNot = false; RecordStore rs = null; if (recordStoreName.length() > 32) return false; try { rs = RecordStore.openRecordStore(recordStoreName, false); } catch (RecordStoreNotFoundException e) { existingOrNot = false; } catch (Exception e) { } finally { try { rs.closeRecordStore(); } catch (Exception e) { } } return existingOrNot; } public void commandAction(Command c, Displayable s) { destroyApp(false); notifyDestroyed(); } } class averageFilter implements RecordFilter { public boolean matches(byte[] candidate) { DataInputStream student = new DataInputStream(new ByteArrayInputStream(candidate)); int average = 0; try { String dummy = student.readUTF(); average = (student.readInt() + student.readInt() + student.readInt()) / 3; } catch (Exception e) { } if (average >= 80) return true; else return false; } } class Student { private int ID = -1; private String name; private int chineseScore; private int englishScore; private int mathScore; public void write(String name, int chineseScore, int englishScore, int mathScore) { this.name = name; this.chineseScore = chineseScore; this.englishScore = englishScore; this.mathScore = mathScore; } public void setRecordID(int ID) { this.ID = ID; } public int getRecordID() { return ID; } public byte[] changeToByteArray() { byte[] data = null; try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(baos); dos.writeUTF(name); dos.writeInt(chineseScore); dos.writeInt(englishScore); dos.writeInt(mathScore); data = baos.toByteArray(); baos.close(); dos.close(); } catch (Exception e) { } return data; } public void changeFromByteArray(byte[] data) { try { ByteArrayInputStream bais = new ByteArrayInputStream(data); DataInputStream dis = new DataInputStream(bais); name = dis.readUTF(); chineseScore = dis.readInt(); englishScore = dis.readInt(); mathScore = dis.readInt(); bais.close(); dis.close(); } catch (Exception e) { } } public String getName() { return name; } public int getChineseScore() { return chineseScore; } public int getEnglishScore() { return englishScore; } public int getMathScore() { return mathScore; } }