Boost logo

Boost :

Subject: [boost] Boost.SQL?
From: Roland Bock (rbock_at_[hidden])
Date: 2010-09-14 09:26:55


currently I am working on a set of header files which are supposed to
make the life of C++ developers easier when in comes to interacting with
databases (based on SQL). Goals are:

* Stay close to SQL syntax
* Do as much type checking as possible
* prevent oversights and typical security holes, e.g. by forgetting to
escape strings

The basic idea is, that given a table definition, it should be possible to

* offer a lot of checks at compile time for building a query
* make it hard to misinterpret the results

Until now, I have been concentrating on table definitions and select

Here's a very simplistic example, assuming a table definition "my_table"
and a database connection "db":

// -------------------------------------------------------------------------
using boost;

typedef my_table<> t;
typedef sql::select_record<t> record;
std::string name("Peter");


std::vector<record> records =<record>(
         sql::where(t::id() > 1000 && t::first_name() == name),

// the values can be accessed by their name
// and are of the correct type, e.g.
records.front().first_name_; // is a string
records.front().middle_name_; // optional<string> because the table
definition says that it can be NULL

// In case of a select from more than one table, the values can also be
accessed like this

// -------------------------------------------------------------------------

I wonder if there would be interest for such a library in boost.

Boost list run by bdawes at, gregod at, cpdaniel at, john at