IndexedDBView example
....
void DynamicIndexedViewExample()
{
DynamicDBView<ParamObjExample> dynamic_view("DB_EXAMPLE",
"INT_VALUE, STRING_VALUE, DOUBLE_VALUE, EXAMPLE_LONG, EXAMPLE_DATE",
"WHERE INT_VALUE BETWEEN (?) AND (?) OR "
"STRING_VALUE = (?) OR EXAMPLE_DATE <= (?) ORDER BY EXAMPLE_LONG",
BPAExampleObj());
DynamicIndexedDBView< DynamicDBView<ParamObjExample> >
indexed_view(dynamic_view,
"UNIQUE PrimaryIndex; STRING_VALUE;"
"IndexLongDate; EXAMPLE_LONG, EXAMPLE_DATE",
BOUND, USE_ALL_FIELDS, cb_ptr_fun(SetParamsExample));
DynamicIndexedDBView< DynamicDBView<ParamObjExample> >::indexed_iterator idxview_it = indexed_view.find(string("Foozle"));
if (idxview_it != indexed_view.end()) {
variant_row replacement;
replacement = *idxview_it;
replacement["STRING_VALUE"] = string("Fizzle");
indexed_view.replace(idxview_it, replacement);
}
const TIMESTAMP_STRUCT date_criteria = {2000, 1, 1, 0, 0, 0, 0};
long long_criteria = 33;
DynamicIndexedDBView< DynamicDBView<ParamObjExample> >::indexed_pair
pr = indexed_view.equal_range_AK("IndexLongDate", long_criteria, date_criteria);
idxview_it = pr.first;
cout << "*** Size before erase calls: " << indexed_view.size() << " ***" << endl;
while (idxview_it !="pr.second)" {
DynamicIndexedDBView< DynamicDBView<ParamObjExample> >::indexed_iterator deleteMe="idxview_it;"
idxview_it++;
indexed_view.erase(deleteMe);
}
cout << "*** Size after erase calls: " << indexed_view.size() << " ***" << endl;
pair<DynamicIndexedDBView< DynamicDBView<ParamObjExample> >::iterator, bool> ins_pr;
variant_row r(indexed_view.DataObj());
r["INT_VALUE"]=459;
r["STRING_VALUE"]=string("Unique String #1");
r["DOUBLE_VALUE"]=3.5;
r["EXAMPLE_LONG"]=1;
r["EXAMPLE_DATE"]=date_criteria;
ins_pr=indexed_view.insert(r);
cout << "insertion succeded=" << (ins_pr.second == true ? " true": " false") << endl;
}