[odb-users] SQlite ATTACH DATABASE + one minor issue

Alexander A. Prokhorov prokher at gmail.com
Sat Dec 15 12:11:35 EST 2012

   Hi Boris,
   first I would like to report an issue. The first time I tries to use
   "view" feature with my sqlite db I've got the compilation error:

     view-result.hxx:27: error: expected class-name before `{' token

   looks like it cannot find result_impl_base . Including

     #include <odb/sqlite/result.hxx>

   into sqlite/view-result.hxx fixed the problem.
   The next thing I would like to ask is why executing (through
   odb::connection)  SQL instruction

     ATTACH DATABASE '/path/dbfile' AS dst


     Exception: std::exception : 1: near "dst": syntax error

   The same line works pretty well within sqlite3 command line interface.
   Actually, the target I would like to achieve is the following. My
   software works with in-memory sqlite database until user asks to save
   it to disk. I've googled a little bit and have not found the better
   way than just to enumerate all the tables using ODB view feature

     #pragma db view query("SELECT name FROM sqlite_master WHERE
     struct DatabaseTable {
       #pragma db type("TEXT")
       QString name;
     odb::result<DatabaseTable> res = _db->query<DatabaseTable>();

   then ATTACH destination database and copy all the tables:

     odb::connection_ptr c(_db->connection());
     c->execute("ATTACH DATABASE '/path/dbfile' AS dst");
     for (...) {
       c->execute("INSERT dst.table_i SELECT * FROM table_i");
     c->execute("DETACH DATABASE dst");

   but exception occurs :(

     Exception: std::exception : 1: near "dst": syntax error

   Probably there is a better way to copy all the data from base to base,
   I would appreciate any advice here.

More information about the odb-users mailing list