#include "dba/dba.h"
#include <iostream>
class Foo : public dba::Storeable {
DECLARE_STORE_TABLE();
public:
int mIntVal;
std::string mStrVal;
};
BEGIN_STORE_TABLE(Foo, dba::Storeable, "foo_table")
BIND_STR(Foo::mStrVal,dba::String,"strval")
BIND_INT(Foo::mIntVal,dba::Int,"intval")
END_STORE_TABLE()
const char* counter_create =
"CREATE TABLE debea_object_count ("
" id INT"
")";
const char* counter_init =
"INSERT INTO debea_object_count VALUES (1)";
const char* foo_create =
"CREATE TABLE foo_table ("
" id INT PRIMARY KEY,"
" intval INT,"
" strval VARCHAR"
")";
int
main (int argc, char** argv) {
try {
dba::SQLArchive ar;
ar.setIdFetcher(new dba::GenericFetcher());
unlink("foobasefile.sqt3");
ar.open("dbasqlite3-static", "dbname=foobasefile.sqt3");
ar.getOStream().sendUpdate(counter_create);
ar.getOStream().sendUpdate(counter_init);
ar.getOStream().sendUpdate(foo_create);
Foo c1;
c1.mIntVal = 12;
c1.mStrVal = "test string";
dba::SQLOStream ostream = ar.getOStream();
ostream.open();
ostream.put(&c1);
std::cout << "Foo c1 was stored with id = " << c1.getId() << std::endl;
ostream.destroy();
Foo c2;
dba::SQLIStream istream = ar.getIStream();
istream.open(c2);
while (istream.getNext(&c2)) {
std::cout << "readed Foo c2 with id: " << c2.getId() << std::endl;
};
if ((c1.mIntVal == c2.mIntVal)
&& (c1.mStrVal == c2.mStrVal))
std::cerr << "Foo is Foo!" << std::endl;
return 0;
} catch (const dba::Exception& pEx) {
std::cout << "Error: " << pEx.what() << std::endl;
return -1;
};
};