db6.cpp
Go to the documentation of this file.00001
00016 #include <iostream>
00017 #include <ham/hamsterdb.hpp>
00018
00019 #define LOOP 10
00020
00021 int
00022 run_demo(void)
00023 {
00024 int i;
00025 ham::db db;
00026 ham::key key;
00027 ham::record record;
00028
00029
00030
00031
00032 db.create("test.db");
00033
00034
00035
00036
00037
00038
00039
00040 for (i=0; i<LOOP; i++) {
00041 key.set_size(sizeof(i));
00042 key.set_data(&i);
00043
00044 record.set_size(sizeof(i));
00045 record.set_data(&i);
00046
00047 db.insert(&key, &record);
00048 }
00049
00050
00051
00052
00053
00054
00055
00056
00057 for (i=0; i<LOOP; i++) {
00058 key.set_size(sizeof(i));
00059 key.set_data(&i);
00060
00061 record=db.find(&key);
00062
00063
00064
00065
00066 if (*(int *)record.get_data()!=i) {
00067 std::cerr << "db::find() ok, but returned bad value" << std::endl;
00068 return (-1);
00069 }
00070 }
00071
00072
00073
00074
00075
00076 db.close();
00077 db.open("test.db");
00078
00079
00080
00081
00082 for (i=0; i<LOOP; i++) {
00083 key.set_size(sizeof(i));
00084 key.set_data(&i);
00085
00086 db.erase(&key);
00087 }
00088
00089
00090
00091
00092
00093 for (i=0; i<LOOP; i++) {
00094 key.set_size(sizeof(i));
00095 key.set_data(&i);
00096
00097 try {
00098 record=db.find(&key);
00099 }
00100 catch (ham::error &e) {
00101 if (e.get_errno()!=HAM_KEY_NOT_FOUND) {
00102 std::cerr << "db::find() returned error " << e.get_string()
00103 << std::endl;
00104 return (-1);
00105 }
00106 }
00107 }
00108
00109
00110
00111
00112
00113
00114 std::cout << "success!" << std::endl;
00115 return (0);
00116 }
00117
00118 int
00119 main(int argc, char **argv)
00120 {
00121 try {
00122 return (run_demo());
00123 }
00124 catch (ham::error &e) {
00125 std::cerr << "run_demo() failed with unexpected error "
00126 << e.get_errno() << " ('"
00127 << e.get_string() << "')" << std::endl;
00128 return (-1);
00129 }
00130 }