• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Paul Clapham
  • Jeanne Boyarsky
  • Junilu Lacar
  • Henry Wong
Sheriffs:
  • Ron McLeod
  • Devaka Cooray
  • Tim Cooke
Saloon Keepers:
  • Tim Moores
  • Stephan van Hulst
  • Frits Walraven
  • Tim Holloway
  • Carey Brown
Bartenders:
  • Piet Souris
  • salvin francis
  • fred rosenberger

How to search multiple records in RecordEnumaration

 
Greenhorn
Posts: 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello experts,
I m developing sales person software in j2me using netbeans 6.5 IDE MIDP 2.0, on Motorola A810 mobile

Records are stored in RMS data base,we want to search date for this application with one Search key having multiple records.

were using following code but it giving only one record as result,but actually it contains multiple records in database.

part of our code is:
public void commandAction(Command command, Displayable displayable) {
if (command == exit) {
destroyApp(true);
notifyDestroyed();
} else if (command == start) {

try {
recordstore = RecordStore.openRecordStore(
"myRecordStore", true);
} catch (Exception error) {
alert = new Alert("Error Creating", error.toString(), null, AlertType.WARNING);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
}

try {
byte[] outputRecord;
String outputString[] = {"Adam", "Bob", "Bob"};
int outputInteger[] = {15, 10, 15};
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
DataOutputStream outputDataStream =
new DataOutputStream(outputStream);
for (int x = 0; x < 3; x++) {
outputDataStream.writeUTF(outputString[x]);
outputDataStream.writeInt(outputInteger[x]);
outputDataStream.flush();
outputRecord = outputStream.toByteArray();
recordstore.addRecord(outputRecord, 0, outputRecord.length);
outputStream.reset();
}
outputStream.close();
outputDataStream.close();
} catch (Exception error) {
alert = new Alert("Error Writing",
error.toString(), null, AlertType.WARNING);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
}

try {
String inputString;
byte[] byteInputData = new byte[300];
ByteArrayInputStream inputStream =
new ByteArrayInputStream(byteInputData);
DataInputStream inputDataStream =
new DataInputStream(inputStream);
if (recordstore.getNumRecords() > 0) {
filter = new Filter("Bob");
recordEnumeration = recordstore.enumerateRecords(
filter, null, false);
while (recordEnumeration.hasNextElement()) {
recordstore.getRecord(recordEnumeration.nextRecordId(), byteInputData, 0);
inputString = inputDataStream.readUTF() +
" " + inputDataStream.readInt() ;
alert = new Alert("Reading", inputString,
null, AlertType.WARNING);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
}
}
inputStream.close();
} catch (Exception error) {
alert = new Alert("Error Reading",
error.toString(), null, AlertType.WARNING);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
}
try {
recordstore.closeRecordStore();
} catch (Exception error) {
alert = new Alert("Error Closing",
error.toString(), null, AlertType.WARNING);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
}
if (RecordStore.listRecordStores() != null) {
try {
RecordStore.deleteRecordStore("myRecordStore");
filter.filterClose();
recordEnumeration.destroy();
} catch (Exception error) {
alert = new Alert("Error Removing",
error.toString(), null, AlertType.WARNING);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
}
}
}
}
}

class Filter implements RecordFilter {

private String search = null;
private ByteArrayInputStream inputstream = null;
private DataInputStream datainputstream = null;

public Filter(String searchcriteria) {
search = searchcriteria;
}

public boolean matches(byte[] suspect) {
String string = null;
try {
inputstream = new ByteArrayInputStream(suspect);
datainputstream = new DataInputStream(inputstream);
string = datainputstream.readUTF();
} catch (Exception error) {
return false;
}
if (string != null && string.indexOf(search) != -1) {
return true;
} else {
return false;
}
}

public void filterClose() {
try {
if (inputstream != null) {
inputstream.close();
}
if (datainputstream != null) {
datainputstream.close();
}
} catch (Exception error) {
}
}


thanks in advance
 
Rancher
Posts: 2265
20
Android Java ME Eclipse IDE Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Are you sure you dont have any issues with writing records.
 
Saloon Keeper
Posts: 22111
151
Android Eclipse IDE Tomcat Server Redhat Java Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Throwing away exceptions is perilous. Even things that are neve supposed to fail sometimes do.

It's said that you should never test for an exception that you don't know how to handle, but that's not really true. Even if you don't know how to handle it, you should report it.
 
You would be much easier to understand if you took that bucket off of your head. And that goes for the tiny ad too!
Devious Experiments for a Truly Passive Greenhouse!
https://www.kickstarter.com/projects/paulwheaton/greenhouse-1
    Bookmark Topic Watch Topic
  • New Topic