Link to home
Start Free TrialLog in
Avatar of bluelagoon88
bluelagoon88

asked on

J2ME RMS(Record Management System)

hi, wanna ask if someone could code out a sample code whereby it can store names and phone numbers into the RMS. Thank you.
Avatar of petmagdy
petmagdy
Flag of Canada image

Here We go an example a game that stores top achieved scores, each record is (Name|#trials|Level#) example (John|13|2):



import javax.microedition.rms.*;
import java.io.*;
import java.util.*;

public class MMStore
{
//Single Tone Class
    protected RecordStore m_TopScores;    
   
    /** Creates a new instance of MMStore */
    public MMStore() throws Exception
    {
        m_TopScores = RecordStore.openRecordStore("MasterMindTS",true);
    }
   
   
    public void close() throws Exception
    {
        if(!m_bOpened)
        {
            return;
        }
        m_TopScores.closeRecordStore();
    }
   
 
     protected static byte[] constructRecord(Vector elements, char cSeparator)
    {
        String szRecord="";
        int nSize= elements.size();
        for(int i=0; i < nSize ; i++)
        {
            szRecord += (String) elements.elementAt(i);
            if( i < (nSize - 1))
            {    
                String sep = String.valueOf(cSeparator);
                szRecord += sep;
            }
        }
//System.out.println("Constructed szRecord: " + szRecord);      
       
        return szRecord.getBytes();
    }
   
   
   
    public int getTopScoresRecordsCount() throws RecordStoreNotOpenException
    {
        return m_TopScores.getNumRecords();
    }
   
   
   
   
    public Integer addTopScore(String szName, int nTrials) throws Exception
    {
        Vector elements = new Vector();
        int nLevel=2;
        elements.addElement(szName);
        elements.addElement(String.valueOf(nTrials));
        elements.addElement(String.valueOf(nLevel));
        byte[] record = constructRecord(elements,'|');
        int nRecID=m_TopScores.addRecord(record,0, record.length);
        return new Integer(nRecID);
    }
   
    public void removeAllScores() throws Exception
    {
        Hashtable topScores = new Hashtable();
//System.out.println("Start MMStore.getTopScores()");        
        RecordEnumeration enum = m_TopScores.enumerateRecords(null,null,false);
//System.out.println("enumerateRecords MMStore.getTopScores()");        
       
        if(enum == null)
        {
            return;
        }
        while(enum.hasNextElement())
        {
            int nRecId=enum.nextRecordId();
            m_TopScores.deleteRecord(nRecId);
        }
    }
 
}

Avatar of bluelagoon88
bluelagoon88

ASKER

petmagdy, can this code be modified so that it can be use to store only the names and numbers in a handphone? Currently doin a project that needs to store people's names and contacts into the handphone(RMS). Thanks in advance.
by the way.. i need to compile it as a MIDlet
Using Wireless toolkit to compile. Thanks again.
You can store any thing u want it is not structured u are just as if u r storing rows, each row is a byte[], so u construct a string by cocatinating a name + '|' + handphone number, i am using '|' character as a separator u can choose something else, to construct ur MIDP application and compile and assemble ur application as JAD and JAR easily I recommend for u Sun Java studio Mobility 6 u can download it from

http://wwws.sun.com/software/download/products/41085de1.html

good luck
petmagdy, theres an error in the coding.. may i know what is the problem?


C:\WTK20\apps\MMStore\src\MMStore.java:19: cannot resolve symbol
symbol  : variable m_bOpened
location: class MMStore
        if(!m_bOpened)

            ^
1 error
com.sun.kvem.ktools.ExecutionException
Build failed
yes put under the line

    protected RecordStore m_TopScores;    

this line to define m_bOpened

protected boolean m_bOpened;

ok thanks.. i will see wat i can do..
theres an error in this set of code... wats the problem with it?

--------------------------------------------------------------------------------------------------

import javax.microedition.rms.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.io.*;
public class RecordStoreExample
      extends MIDlet implements CommandListener
{
  private Display display;
  private Alert alert;
  private Form form;
  private Command exit;
  private Command start;
  private RecordStore recordstore = null;
  private RecordEnumeration recordenumeration = null;
public RecordStoreExample ()
{
  display = Display.getDisplay(this);
  exit = new Command("Exit", Command.SCREEN, 1);
  start = new Command("Start", Command.SCREEN, 1);
  form = new Form("Record Store");
  form.addCommand(exit);
  form.addCommand(start);
  form.setCommandListener(this);
}
public void startApp()
{
  display.setCurrent(form);
}
public void pauseApp()
{
}
public void destoryApp (boolean unconditional)
{
}
public void commandAction(Command command, Displayable displayable)
{
  if (Command == exit)
{
  destoryApp(true);
  notifyDestoryed();
}
else if (command == start)
{
  try
  {
    recordstore = RecordStore.openRecordStore("myRecordStore", true);
  }
  catch (Exception error)
  {
    alert = new Alert("Error Creating", error.toString(), null, AlertType.Warning);
    alert.setTimeout(Alert.FOREVER);
    display.setCurrent(alert);
  }
  if (RecordStore.listRecordStores() != null)
  {
  try
    {
      RecordStore.deleteRecordStore("myRecordStore");
    }
  catch (Exception error)
  {
   alert = new Alert("Error Removing", error.toString(), null, AlertType.WARNING);
   alert.setTimeout(Alert.FOREVER);
   display.setCurrent(alert);
  }
  }
  }
 }
}

----------------------------------------------------------------------------------------------

Here's the error message:
c:\WTK104\apps\RecordStoreExample\src\RecordStoreExample.java:5: RecordStoreExample is not abstract and does not override abstract method destroyApp(boolean) in javax.microedition.midlet.MIDlet

public class RecordStoreExample

       ^

c:\WTK104\apps\RecordStoreExample\src\RecordStoreExample.java:37: cannot resolve symbol

symbol  : variable Command

location: class RecordStoreExample

  if (Command == exit)

      ^

c:\WTK104\apps\RecordStoreExample\src\RecordStoreExample.java:40: cannot resolve symbol

symbol  : method notifyDestoryed ()

location: class RecordStoreExample

  notifyDestoryed();

  ^

c:\WTK104\apps\RecordStoreExample\src\RecordStoreExample.java:50: cannot resolve symbol

symbol  : variable Warning

location: class javax.microedition.lcdui.AlertType

    alert = new Alert("Error Creating", error.toString(), null, AlertType.Warning);

                                                                         ^

4 errors
ASKER CERTIFIED SOLUTION
Avatar of petmagdy
petmagdy
Flag of Canada image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Also in the line

  if (Command == exit)


change it to:

  if (command == exit)

sorry also u wrote this line wrongly:

  notifyDestoryed();

write it:


  notifyDestroyed();

Also change

    alert = new Alert("Error Creating", error.toString(), null, AlertType.Warning);

to

    alert = new Alert("Error Creating", error.toString(), null, AlertType.WARNING);

again be case sensitive
ok thx... i'll try it out