Boost logo

Boost :

From: Vinzenz Feenstra (evilissimo_at_[hidden])
Date: 2005-02-10 11:11:36


Arkadiy Vertleyb wrote:
> "Vinzenz Feenstra" <evilissimo_at_[hidden]> wrote
>
>
>>What exactly ist the motivation and the goal of rel/rtl ?
>
>
> To implement an STL-compatible "relational table" container, that is
> type-safe and allows fields of any built-in or user-defined type.
>
> Naturally, once there is a container, operations are required. Hence, the
> relational algebra.
>
> We think such library could become a good alternative to, for example, MS
> Access, for light-weight applications. Also, the possibility to perform
> relational operations on objects might bring new and unexpected
> possibilities. As always with relational databases, the library is
> particulary convenient and efficient when multiple views of the same data
> are required and need to be kept in-sync.
>
> HTH,
>
> Arkadiy
>
Hmm, that sounds interessting.

I started thinking about doing some Policy Based, for a Database
Frontend Library. And thought about using a STL-Container like interface
But this class will access a real database, like SQLite.

This what I am posting here is only an idea how it could be used:

------------------------------------------------------------------------

typedef dbContainer<
                    // SQLite does not need any user/pw infos
                    dbDatabase ( "Company.db" ),
                    dbTable ( "Ware" ), // using table Ware
                    dbRow < // defining the field of a row
                           dbValues <
                                     dbInt<
                                           "id" ,
                                           dbFieldOptions<
                                                          dbPrimaryKey
 
dbAutoIncrement
>
>,
                                      dbText < "name" > ,
                                      dbFloat < "price" >
>
> , // end fields of a row definition
                    dbBackend < dbSQLite > // use the SQLite Backend
> WareTable;

typedef WareTable::row_type WT_Row;

WareTable wt_test;

wt_test.insert(WT_Row(dbNULLType, "Apple" , "3.33" ));
wt_test.insert(WT_Row(dbNULLType, "Orange" , "2.13" ));
wt_test.insert(WT_Row(dbNULLType, "Peach" , "4.57" ));
wt_test.insert(WT_Row(dbNULLType, "Plum" , "7.49" ));

dbResIterator<WT_Row> results = wt_test.lookup(dbText<"name","Plum">);

while(results){
   while(results.columns)
      std::cout << *(results.columns++) << std::endl;
   ++results;
}

------------------------------------------------------------------------

However this is only an idea I have, where nothing of it is implemented
or something.

I was asking myself if boost::rel/rtl will go in this direction or not.

A db- backend would be nice, wouldn't it?

Or a kind of SaveToDatabase ^^ xD

BR

Vinzenz


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk