#include "dba/dba.h"
#include <iostream>
class Foo : public dba::Storeable {
DECLARE_STORE_TABLE();
public:
int mIntVal;
};
BEGIN_STORE_TABLE(Foo, dba::Storeable, "foo_table")
BIND_INT(Foo::mIntVal,dba::Int,"intval")
END_STORE_TABLE()
dba::SQL counter_create(
"CREATE TABLE debea_object_count ("
" id INT"
")");
dba::SQL foo_create(
"CREATE TABLE foo_table ("
" id INT PRIMARY KEY,"
" intval INT,"
" binded_str VARCHAR"
")");
void
bindedVars(dba::SQLArchive& pAr) {
dba::SQLOStream ostream = pAr.getOStream();
Foo b;
b.mIntVal = 7;
std::string var("Binded variable stored with Foo");
ostream.bind("foo_table","binded_str",
new dba::String(var),dba::Database::STRING);
ostream.open();
ostream.put(&b);
std::cout << "FooBase was stored with id = "
<< b.getId() << std::endl;
ostream.destroy();
int id, intval;
std::string binded_str;
std::cout << "FooBase data:" << std::endl;
std::auto_ptr<dba::DbResult> res(pAr.getIStream().sendQuery(
dba::SQL("SELECT id, intval, binded_str FROM foo_table").into(id).into(intval).into(binded_str)
));
while(res->fetchRow()) {
std::cout <<
"id: "<< id <<
" intval: " << intval <<
" binded_str: " << binded_str <<
std::endl;
};
std::cout << "=======================" << std::endl;
dba::SQLIStream istream = pAr.getIStream();
Foo readed;
std::string str_readed;
istream.bind("foo_table","binded_str",
new dba::String(str_readed),dba::Database::STRING);
istream.open(readed);
istream.getNext(&readed);
std::cout << "Readed binded var: '" << str_readed
<< "'" << std::endl;
};
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(foo_create);
ar.getOStream().sendUpdate(dba::SQL("INSERT INTO debea_object_count VALUES (:d)") << 1);
bindedVars(ar);
return 0;
} catch (const dba::SQLException& pEx) {
std::cout << "SQL Error: " << pEx.what() << std::endl;
std::cout << "While executing: " << std::endl
<< pEx.getQuery() << std::endl;
} catch (const dba::Exception& pEx) {
std::cout << "Error: " << pEx.what() << std::endl;
return -1;
};
};