o problema é o seguinte ao recuperar o os registro atravez de uma busca eu nao estou conseguindo lista todos os registros, teria que funcionar da seguinte forma:
ao fazer a busca pelo nome "rafael" a saida teria que ser os tres nomes que estao armazenados no recordstore, mais ao inves disso esta aparecendo apenas dois nomes
segue o codigo abaixo:
eu acho que isso está acontecendo pq a o vetor record nao está sendo inicializado com o registro do id 0 (linha 13). Sendo assim eu criei um vetor dentro do while (linha14) para reber todos os ids do recordstrore e utilizei o vetIds.elementAt(0) para recuperar o id 0, so q msm assim nao consegui, será que alguem pode me ajudar ?
Desculpa errei nessa linha
dStream = new DataInputStream(new ByteArrayInputStream(rsNomes.getRecord(reNomes.nextRecordId())));
a cada interação do “while” crio um novo input , dando um geRecord do proximo id …
nao deu certo nao continuou listando apenas dois registro. agora pouco eu fui ler de novo o topico e percebi que eu nao expliquei direiro agora eu editei o topico. É assim o recordstore tem tres registro iguais soh que quando eu fasso uma busca com o nome do registro a saida eh apenas de dois registro fica faltando um, tah ai desconfinça que esse registro que está faltando está no record do id 0 porque c vc reparar quando eu fasso a busca eu utilizo o nextRecord(); (linha 14) para inicializar o vetor record. eu acho que o certo seria inicializar o vetor record com o record do id 0, soh que o nextRecord nao começa do id 0 neh ? ai eh que ta eu nao sei como fazer para inicializar o vetor record do id 0.
N
npereirajr
Lembre-se de que o primeiro ID de registro do recordstore é o 1, e não o 0 como você citou.
Sua busca deve iniciar pelo registro 1.
R
Rafael_Oliveira_da_S
npereirajr:
Lembre-se de que o primeiro ID de registro do recordstore é o 1, e não o 0 como você citou.
Sua busca deve iniciar pelo registro 1.
mais o nextRecord(); inicia da onde ? c for do 1 entao era para funcionar perfeitamente soh que nao está listando todos os regitros.
R
Rafael_Oliveira_da_S
npereirajr:
Lembre-se de que o primeiro ID de registro do recordstore é o 1, e não o 0 como você citou.
Sua busca deve iniciar pelo registro 1.
pq c fazer isso aqui nao da certo ?
P
PoneyMan
[quote=Rafael Oliveira da Silva]
npereirajr:
Lembre-se de que o primeiro ID de registro do recordstore é o 1, e não o 0 como você citou.
Sua busca deve iniciar pelo registro 1.
pq c fazer isso aqui nao da certo ?
Pq não é sempre garantido que vá existir no recordstore um registro com ID 1.
Como o id do record é incremental, e este record pode vir a ser deletado, se o for, da próxima vez que vc abrir de novo este recordstore e executar esta linha, é para ganhar uma linda InvalidRecordIDException…
R
Rafael_Oliveira_da_S
[quote=boone]
Rafael Oliveira da Silva:
npereirajr:
Lembre-se de que o primeiro ID de registro do recordstore é o 1, e não o 0 como você citou.
Sua busca deve iniciar pelo registro 1.
pq c fazer isso aqui nao da certo ?
Pq não é sempre garantido que vá existir no recordstore um registro com ID 1.
Como o id do record é incremental, e este record pode vir a ser deletado, se o for, da próxima vez que vc abrir de novo este recordstore e executar esta linha, é para ganhar uma linda InvalidRecordIDException…
entao como q eu fasso para inicializar o vetor record com o record do id 1 ?
P
PoneyMan
[quote=Rafael Oliveira da Silva]
boone:
Rafael Oliveira da Silva:
npereirajr:
Lembre-se de que o primeiro ID de registro do recordstore é o 1, e não o 0 como você citou.
Sua busca deve iniciar pelo registro 1.
pq c fazer isso aqui nao da certo ?
Pq não é sempre garantido que vá existir no recordstore um registro com ID 1.
Como o id do record é incremental, e este record pode vir a ser deletado, se o for, da próxima vez que vc abrir de novo este recordstore e executar esta linha, é para ganhar uma linda InvalidRecordIDException…
entao como q eu fasso para inicializar o vetor record com o record do id 1 ?
A chave de tudo é sempre usar a enumeração (enumerateRecords e nextRecordId) para popular o vetor com os IDs.
R
Rafael_Oliveira_da_S
ah tah, mais eu jah fiz isso ja e depois utilizei o vetIds.elementAt() para recuperar o id mais continuou listando apenas dois regitros ai inves dos tres
P
PoneyMan
Rafael Oliveira da Silva:
A chave de tudo é sempre usar a enumeração (enumerateRecords e nextRecordId) para popular o vetor com os IDs.
ah tah, mais eu jah fiz isso ja e depois utilizei o vetIds.elementAt() para recuperar o id mais continuou listando apenas dois regitros ai inves dos tres
Cara…posta os 2 trechos de código:
:arrow: O laço while onde vc percorre a enumeração e preenche o vetIds
:arrow: O trecho onde usa o elementAt
Só vendo o que vc está fazendo é que dá para apontar o erro.
R
Rafael_Oliveira_da_S
fmz eu vou fazer de novo ai eu posto valeu
R
Rafael_Oliveira_da_S
Cara..posta os 2 trechos de código:
:arrow: O laço while onde vc percorre a enumeração e preenche o vetIds
:arrow: O trecho onde usa o elementAt
Só vendo o que vc está fazendo é que dá para apontar o erro.
publicvoidBusca()throwsRecordStoreException,IOException{// Recupera os registros usando enumeraçãotry{reNomes=rsNomes.enumerateRecords(null,null,false);}catch(Exceptionerro){}if(reNomes.numRecords()>0){ByteArrayInputStreambStream;DataInputStreamdStream;StringnameRMS=null;byte[]record;intid=reNomes.nextRecordId();vetIds.addElement(""+id);record=rsNomes.getRecord(Integer.parseInt(vetIds.elementAt(1).toString()));while(reNomes.hasNextElement()){bStream=newByteArrayInputStream(record);dStream=newDataInputStream(bStream);nameRMS=dStream.readUTF();if(nameRMS.compareTo(tf_Buscar.getString())==0){findAddress=true;StringnameRMS2;nameRMS2=dStream.readUTF();list.append(nameRMS+"-"+nameRMS2,null);}record=reNomes.nextRecord();}if(!findAddress)System.out.println("naocadastrado");}else{System.out.println("naocadastrado");}}}
adicionei as linha 18, 19, 20 e 21 so q msm assim apos a busca no recordstrore so é exibido dois registro ao inves dos tres, veja na figura abaixo