Hallo Leute,
ich habe folgendes Problem. Ich habe mir ein kleines mobiles Haushaltsbuch geschrieben fürs Handy.
Die Daten der Konten werden per RMS gespeichert. Ich habe nun folgendes Problem:
Wenn ich eine neue (verbesserte Version) von meinem Programm auf dem Handy installieren, dann kann ich nicht mehr auf den RMS-Store der vorherigen Programm-Version zugreifen und verliere so alle Informationen .
Ist das normal wenn man mit RMS arbeitet? Oder liegt es an meinem Handy (6280) ? Oder an der Art wie ich die Jar auf dem Handy installiere (kopiere die Jar einfach auf die SD-Karte)?
Quellcode der Store-Methode:
Quellcode der Load-Methode:
ich habe folgendes Problem. Ich habe mir ein kleines mobiles Haushaltsbuch geschrieben fürs Handy.
Die Daten der Konten werden per RMS gespeichert. Ich habe nun folgendes Problem:
Wenn ich eine neue (verbesserte Version) von meinem Programm auf dem Handy installieren, dann kann ich nicht mehr auf den RMS-Store der vorherigen Programm-Version zugreifen und verliere so alle Informationen .
Ist das normal wenn man mit RMS arbeitet? Oder liegt es an meinem Handy (6280) ? Oder an der Art wie ich die Jar auf dem Handy installiere (kopiere die Jar einfach auf die SD-Karte)?
Quellcode der Store-Methode:
Code:
debugOut("Store" + buf.toString());
ByteArrayOutputStream bout = new ByteArrayOutputStream();
DataOutputStream dout = new DataOutputStream( bout );
dout.writeChars(buf.toString());
RecordStore rs = null;
try
{
byte[] data = bout.toByteArray();
rs = RecordStore.openRecordStore(RS_NAME, false);
/* versucht den RecordStore "Konto" zu öffnen.
Falls dies nicht gelingt wird eine RecordStoreException geworfen.*/
rs.setRecord( 1, data, 0, data.length );
}
catch(RecordStoreException e)
{// wird geworfen falls der Recordstore nicht existiert.
try
{
byte[] data = bout.toByteArray();
rs = RecordStore.openRecordStore(RS_NAME, true);
/* versucht den RecordStore "Konto" zu öffnen.
Ist der 2. Parameter true, wird der Recordstore erstellt
falls er nicht schon existiert.*/
rs.addRecord( data, 0, data.length );
// fügt dem RecordStore einen neuen Record mit den Daten hinzu.
}
catch(RecordStoreException e1)
{// wird geworfen falls kein Store oder kein Record erstellt werden kann.
e1.printStackTrace();
}
}
finally
{
try
{
dout.close();
bout.close();
if( rs != null )
rs.closeRecordStore();
}
catch( Exception e )
{
e.printStackTrace();
}
}
debugOut("stored");
}
Quellcode der Load-Methode:
Code:
RecordStore rs = null;
ByteArrayInputStream bin = null;
DataInputStream din = null;
try
{
rs = RecordStore.openRecordStore(RS_NAME, false);
byte[] data = rs.getRecord( 1 );
if(data == null)
{
return;
}
bin = new ByteArrayInputStream(data );
din = new DataInputStream( bin );
char buf;
StringBuffer bu = new StringBuffer();
try{
while((buf = din.readChar()) != -1)
{
if(buf == '?')
{
debugOut("Buffer is " + bu.toString());
String[] s = this.spilt(bu.toString(),'=');
if("konto".equals(s[0]))
{
debugOut("Load Konto");
Konto k = new Konto(s[1]);
this.kontos.addElement(k);
}
if("item".equals(s[0]))
{
debugOut("Load Item");
String[] a = this.spilt(s[1],'|');
Konto_Item item = new Konto_Item(a[0],Float.parseFloat(a[1]),a[2],a[3],a[4]);
Konto k = (Konto)this.kontos.lastElement();
debugOut("Add item " + item.toString() + " to konto " + k.getLable());
try {
k.addItem(item);
} catch (ValidateException ex) {
ex.printStackTrace();
}
}
bu.delete(0,bu.length());
}
else{
bu.append(buf);
}
}
}catch(java.io.EOFException w)
{
//do nothing
// Kenne halt nicht das EOF Zeichen ;)
}
rs.closeRecordStore();
}catch(RecordStoreException e)
{// wird geworfen falls der Recordstore oder der Record nicht existiert.
//e.printStackTrace();
}
debugOut("loaded");