30 printf(
"%s() returned error %d: %s\n", foo, st,
ham_strerror(st));
36 #define DBNAME_CUSTOMER 1
37 #define DBNAME_ORDER 2
40 #define DBIDX_CUSTOMER 0
44 #define MAX_CUSTOMERS 4
63 main(
int argc,
char **argv) {
90 { 1,
"Alan Antonov Corp." },
91 { 2,
"Barry Broke Inc." },
92 { 3,
"Carl Caesar Lat." },
93 { 4,
"Doris Dove Brd." }
110 error(
"ham_env_create", st);
121 error(
"ham_env_create_db(customer)", st);
124 error(
"ham_env_create_db(order)", st);
128 error(
"ham_env_create_db(c2o)", st);
131 for (i = 0; i <
MAX_DBS; i++) {
134 error(
"ham_cursor_create" , st);
145 key.
size =
sizeof(int);
146 key.
data = &customers[i].
id;
149 record.
data = &customers[i];
153 error(
"ham_db_insert (customer)", st);
164 key.
size =
sizeof(int);
172 error(
"ham_db_insert (order)", st);
184 key.
size =
sizeof(int);
187 record.
size =
sizeof(int);
188 record.
data = &orders[i].
id;
192 error(
"ham_db_insert(c2o)", st);
215 error(
"ham_cursor_next(customer)", st);
221 printf(
"customer %d ('%s')\n", customer->
id, customer->
name);
233 c2o_key.
data = &customer->
id;
234 c2o_key.
size =
sizeof(int);
239 error(
"ham_cursor_find(c2o)", st);
243 error(
"ham_cursor_move(c2o)", st);
248 order_id = *(
int *)c2o_record.
data;
249 ord_key.
data = &order_id;
250 ord_key.
size =
sizeof(
int);
256 st =
ham_db_find(db[1], 0, &ord_key, &ord_record, 0);
258 error(
"ham_db_find(order)", st);
260 printf(
" order: %d (assigned to %s)\n",
261 order_id, (
char *)ord_record.
data);
274 error(
"ham_cursor_next(c2o)", st);
286 error(
"ham_env_close", st);
288 printf(
"success!\n");