bom , estou tendo aula sobre rms atualmente na minha faculdade , em casa fiz um simples código para fazer um teste . segue ele abaixotry {
RecordStore r = RecordStore.openRecordStore("records", true);
prop1 = "prop1";
System.out.println(r.addRecord(prop1.getBytes(), 0, prop1.getBytes().length));
System.out.println(new String(r.getRecord(1)));
r.closeRecordStore();
r = RecordStore.openRecordStore("records", true);
System.out.println(new String(r.getRecord(1)));
} catch (RecordStoreFullException e) {
e.printStackTrace();
} catch (RecordStoreNotFoundException e) {
e.printStackTrace();
} catch (RecordStoreException e) {
e.printStackTrace();
}
ele gera nenhum tipo de erro e a primeiro uso ele faz tudo certo , problema eh quando eu executo ele denovo (sem o código)System.out.println(r.addRecord(prop1.getBytes(), 0, prop1.getBytes().length));
já que eu na primeira vez eu adiciono , na segunda quando eu mando ler o RecorStore ele gera um erro do tipo InvalidRecordException assim como se o dado que eu salvei tivesse sumido depois que a primeira execução termino. e eu num faço idéia do que possa ser eu to usando o eclipse , será que eu to esquecendo de alguma configuração ou eh erro no código eu num estou vendo.
try {
RecordStore r = RecordStore.openRecordStore("records", true);
prop1 = "prop1";
System.out.println(r.addRecord(prop1.getBytes(), 0, prop1.getBytes().length));
System.out.println(new String(r.getRecord(1)));
} catch (RecordStoreFullException e) {
e.printStackTrace();
} catch (RecordStoreNotFoundException e) {
e.printStackTrace();
} catch (RecordStoreException e) {
e.printStackTrace();
} finally{
r.closeRecordStore();
}
Tirei duas linhas que aparentemente faziam a mesma coisa que no começo do teu codigo que era abrir o RS e dps da o r.getRecord(I); mas o problema maior seria quando vc criava o record novamente dava o r.getRecord(i); mas não dava close , somente deu close na primeira vez. Mas vê se esta forma que fiz fica melhor pra vc! []'s
na verdade isso que voce comento foi de próposito foi pra confirma se os dados que eu gravava sumia quando o programa acaba ou quando eu fecho o RecordStore , ele grava - ler - fecha - lerdnv , e funciona só quando quando o programa acaba o dado que eu gravei somi :?
Se os dados somem quando vc fecha o Emulador isto é quase que Normal…
Aqui acontece direto de sumir os dados depois que fecho e abro o emulador…
E só para auxiliar na Persistencia com o RMS utilize o Floggy
beleza , vou dar uma olhada neste framework valeu.
tenta ver se ajuda
public String getRecord(int id) {
String toReturn = "";
try {
int recordSize = rs.getRecordSize(id);
byte[] data = new byte[recordSize];
ByteArrayInputStream bais = new ByteArrayInputStream(data);
DataInputStream dis = new DataInputStream(bais);
int numBytes = rs.getRecord(id, data, 0);
toReturn = dis.readUTF();
bais.reset();
bais.close();
dis.close();
} catch (IOException e) {
e.printStackTrace();
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
} catch (InvalidRecordIDException e) {
e.printStackTrace();
} catch (RecordStoreNotOpenException e) {
e.printStackTrace();
} catch (RecordStoreException e) {
e.printStackTrace();
}
return toReturn;
}
deu o problema que eu imaginei - RecordStoreNotFoundException - , problema eh que quando eu crio um RecordStore e acaba o programa , ele some ai quando eu executo o programa dnv ele num encherga , na primeira vez eu estava criando deste jeitoRecordStore r = RecordStore.openRecordStore("records", [b]false[/b]);
ai invez de ele dispara o erro ele criava um novo mais sem nada , agora u setei falso e deu o q deu.
agora eu num fasso a minima idéia q q possa ser