База данных в J2ME

Я новичок в J2ME.

В моем приложении я хочу добавить несколько записей в хранилище записей, а также хочу получить к нему доступ.

Как я могу добавить несколько записей в хранилище записей и как получить к нему доступ?


person Karan    schedule 23.07.2012    source источник


Ответы (2)


Вот код моей библиотеки для RMS, просто изучите его, его очень легко реализовать, все методы, такие как insert, updated, delete, есть.

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;
    }
}
person Lucifer    schedule 23.07.2012
comment
Мистер Люцифер, предоставьте мне файлы CustomAlert и MyMidlet, чтобы я мог их понять визуально. - person Karan; 23.07.2012