#include <sstream>
#include <iostream>
#include "dba/dba.h"
#include "dba/csv.h"
class Person : public dba::Storeable {
DECLARE_STORE_TABLE();
public:
std::string mName;
std::string mSurname;
int mAge;
};
BEGIN_STORE_TABLE(Person, dba::Storeable, "person_table")
BIND_STR(Person::mName,dba::String,"name")
BIND_STR(Person::mSurname,dba::String,"surname")
BIND_INT(Person::mAge,dba::Int,"age")
END_STORE_TABLE()
int
main (int argc, char** argv) {
try {
dba::CSVArchive ar;
unlink("testfile.csv");
ar.hasColumnNames(false);
ar.open("testfile.csv");
ar.addMapping(0,"person_table","name");
ar.addMapping(1,"person_table","surname");
ar.addMapping(2,"person_table","age");
dba::CSVOStream ostream = ar.getOStream();
ostream.open();
for(int i = 0; i < 10; i++) {
Person p;
std::ostringstream name;
name << "Name_" << i;
p.mName = name.str();
std::ostringstream surname;
surname << "Surname_" << i;
p.mSurname = surname.str();
p.mAge = i + 15;
ostream.put(&p);
};
ostream.destroy();
dba::CSVIStream istream = ar.getIStream();
Person p;
istream.open(p);
while(istream.getNext(&p)) {
std::cerr <<
"Loaded Person, name: " << p.mName <<
", surname: " << p.mSurname <<
", age: " << p.mAge
<< std::endl;
};
return 0;
} catch (const dba::CSVParseException& pEx) {
std::cout << "Parse error: " << pEx.what() << std::endl;
} catch (const dba::Exception& pEx) {
std::cout << "Error: " << pEx.what() << std::endl;
return -1;
};
};