Frage

I am new in J2ME.

In my Application, I want to add the Multiple Records in the Record Store and also want to access it.

How can I add the multiple Records in the Record Store and how can I access it?

War es hilfreich?

Lösung

Here is my library code for RMS, just study it, it is very easy to implement, all the methods like insert,updated, delete is there.

import javax.microedition.rms.RecordEnumeration;
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreFullException;
import javax.microedition.rms.RecordStoreNotOpenException;
import com.project.gui.components.CustomAlert;
import com.project.gui.midlet.MyMidlet;

public class RMSStore 
{
    private RecordStore rs = null;

    public void openRecordStore(String str)
    {
        try 
        {
            if(rs == null)
            {
                rs = RecordStore.openRecordStore(str, true);
            }
        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }
    }

    public void closeRecordStore()
    {
        try 
        {
            if(rs!=null)
            {
                rs.closeRecordStore();
            }
        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }
    }

    public void deleteRecordStore(String storenName) 
    {
        try 
        {
            RecordStore.deleteRecordStore(storenName);
        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }
    }

    public void deleteRMS(String storenName) 
    {
        int count = 0;

        try
        {
            RecordStore newRS = RecordStore.openRecordStore(storenName, true);
            count = newRS.getNumRecords();
            newRS.closeRecordStore();
        }
        catch ( Exception e ) 
        {
            System.out.println ( "Error while Opening " + e.toString() );
        }

        if ( count > 0 )
        {
            try 
            {
                RecordStore.deleteRecordStore(storenName);
            }
            catch (Exception e) 
            {
                e.printStackTrace();
            }

        }
    }


    public static String[] listAllRecordStore () 
    {
        return RecordStore.listRecordStores();
    }

    public boolean SearchRecord(String Rec)
    {
        String [] data = getRecordData();

        for ( int i = 0 ; i < data.length ; i++ )
        {
            if ( Rec.toString().trim().equals(data[i].toString().trim()) )
            {
                data = null; // System.gc();
                return true;
            }
        }

        data = null; // System.gc();
        return false;
    }

    public boolean SearchRecord(String Rec, int pos )
    {
        String [] data = getRecordData();

        Rec = Rec.substring(0,pos);
        for ( int i = 0 ; i < data.length ; i++ )
        {
            data[i] = data[i].substring(0, pos );
            if ( Rec.toString().trim().equals(data[i].toString().trim()) )
            {
                data = null; // System.gc();
                return true;
            }
        }

        data = null; // System.gc();
        return false;
    }


    public int getCurrentRecordID ( RMSStore rmsTable, String Rec )
    {
        RecordEnumeration re = null; 
        try
        {
            re = rmsTable.getRecordEnumData();

            while ( re.hasNextElement() )
            {
                int id = re.nextRecordId();
                String record = rmsTable.getRecordFromId(id);

                if ( record.indexOf(Rec) != -1 )
                {
                    return id;
                }
            }
        }
        catch ( Exception e ) { System.out.println ( "getCurrentRecordID Error:" + e.toString() );  }
        return -1;
    }

    public int writeRecord(String str)
    {
        int id = 0;
        try 
        {
            id = rs.addRecord(str.getBytes(), 0, str.getBytes().length);
        } 
        catch (RecordStoreFullException e) 
        {
            CustomAlert memoryFullAlert = new CustomAlert("");
            memoryFullAlert.setString("Memory Full");
            MyMidlet.getDisplay().setCurrent(memoryFullAlert);
        } 
        catch (Exception e) 
        {
            e.printStackTrace();
        }
        return id;
    }

    public int writeByteRecord(byte[] data)
    {
        int id = -1;

        try 
        {
            id = rs.addRecord(data, 0, data.length);
        } 
        catch (RecordStoreFullException e) 
        {
            e.printStackTrace();
            CustomAlert memoryFullAlert = new CustomAlert("");
            memoryFullAlert.setString("Memory Full");
            MyMidlet.getDisplay().setCurrent(memoryFullAlert);          
        } 
        catch (Exception e) 
        {
            e.printStackTrace();
        }
        return id;
    }

    public int getRecordCount()
    {
        try 
        {
            return rs.getNumRecords();
        } 
        catch (Exception e) 
        {
            e.printStackTrace();
        }
        return 0;
    }

    public byte[] getRecordDataFromId(int id)
    {
        byte[] data = null;
        try 
        {
            data = rs.getRecord(id);            
        } 
        catch (Exception e) 
        {
            e.printStackTrace();
        }
        return data;
    }

    public String getRecordFromId(int id)
    { 
        return new String(getRecordDataFromId(id));
    }

    public byte[] getRecordByteFromId(int id)
    { 
        return getRecordDataFromId(id);
    }

    public void deleteRecord(int id)
    {
        try 
        {
            rs.deleteRecord(id);
        } 
        catch (Exception e) 
        {
            e.printStackTrace();
        }
    }

    public boolean checkRecordExists(String compare)
    {
        for(int i = 0; i < getRecordCount(); i++)
        {           
            if(compare.equals(getRecordFromId(i + 1)))
            {
                return true;
            }
        }       
        return false;
    }

    public int getMaxRMSSize()
    {
        int size  = 0;
        try 
        {
            size = rs.getSizeAvailable() + rs.getSize();
        } 
        catch (RecordStoreNotOpenException e) 
        {
            e.printStackTrace();
        }

        return size;
    }

    public void setRecordById(String str, int id)
    {
        try 
        {
            rs.setRecord(id, str.getBytes(), 0, str.getBytes().length);
        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }
    }

    public int getNextRecordId() 
    {
        int id = 0;
        try 
        {
            id = rs.getNextRecordID();
        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }
        return id;
    }

    public RecordEnumeration getRecordEnumData () 
    {
        try 
        {
            return rs.enumerateRecords(null, null, false);
        } 
        catch (Exception e) 
        {
            e.printStackTrace();
            return null;
        }
    }

    public String [] getRecordData()
    {
        String[] str = null;
        int counter = 0;
        try 
        {
            RecordEnumeration enumeration = rs.enumerateRecords(null, null, false);
            str = new String[rs.getNumRecords()];

            while(enumeration.hasNextElement())
            {
                try 
                {
                    str[counter] = (new String(enumeration.nextRecord()));
                    counter ++;
                } 
                catch (Exception e) 
                {
                    e.printStackTrace();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return str;
    }
}

Andere Tipps

RMS is a record based data storage mechanism, so you can store multiple records very easily, see following blog to see how RMS works.

http://www.ibm.com/developerworks/library/wi-rms/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top