Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

J2ME RMS(Record Management System)

Posted on 2004-10-17
14
Medium Priority
?
570 Views
Last Modified: 2013-12-03
hi, wanna ask if someone could code out a sample code whereby it can store names and phone numbers into the RMS. Thank you.
0
Comment
Question by:bluelagoon88
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 6
14 Comments
 
LVL 13

Expert Comment

by:petmagdy
ID: 12337740
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);
        }
    }
 
}

0
 

Author Comment

by:bluelagoon88
ID: 12353783
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.
0
 

Author Comment

by:bluelagoon88
ID: 12354464
by the way.. i need to compile it as a MIDlet
Using Wireless toolkit to compile. Thanks again.
0
Build and deliver software with DevOps

A digital transformation requires faster time to market, shorter software development lifecycles, and the ability to adapt rapidly to changing customer demands. DevOps provides the solution.

 
LVL 13

Expert Comment

by:petmagdy
ID: 12355865
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
0
 

Author Comment

by:bluelagoon88
ID: 12366248
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
0
 
LVL 13

Expert Comment

by:petmagdy
ID: 12366958
yes put under the line

    protected RecordStore m_TopScores;    

this line to define m_bOpened

protected boolean m_bOpened;

0
 

Author Comment

by:bluelagoon88
ID: 12368273
ok thanks.. i will see wat i can do..
0
 

Author Comment

by:bluelagoon88
ID: 12368853
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
0
 
LVL 13

Accepted Solution

by:
petmagdy earned 500 total points
ID: 12368923
add this function to ur class

public void destroyApp(boolean unconditional)
{
}

please be case sensetive
0
 
LVL 13

Expert Comment

by:petmagdy
ID: 12368933
Also in the line

  if (Command == exit)


change it to:

  if (command == exit)

0
 
LVL 13

Expert Comment

by:petmagdy
ID: 12368969
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
0
 

Author Comment

by:bluelagoon88
ID: 12397147
ok thx... i'll try it out
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Ever visit a website where you spotted a really cool looking Font, yet couldn't figure out which font family it belonged to, or how to get a copy of it for your own use? This article explains the process of doing exactly that, as well as showing how…
If you are a mobile app developer and especially develop hybrid mobile apps then these 4 mistakes you must avoid for hybrid app development to be the more genuine app developer.
Six Sigma Control Plans
Introduction to Processes
Suggested Courses

715 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question