| 804 | --------------------------------------------------------------------------------------------------- |
| 805 | == Boost.RDB == |
| 806 | * '''Author(s):''' Jean-Louis Leroy |
| 807 | * '''Version:''' |
| 808 | * '''State:''' |
| 809 | * '''Last upload:''' 2009 November 25 |
| 810 | * '''Links:''' [http://www.boostpro.com/vault/index.php?action=downloadfile&filename=boost_rdb_0.2.02.zip&directory=Database& Boost Vault] |
| 811 | * '''Categories:''' [#Database Database] |
| 812 | * '''Description:''' C++ is a statically typed language. sql is also a statically typed language. It looks like they should play ball together. |
| 813 | |
| 814 | So how comes that most C++/sql bindings make it possible to write and compile code that contains not-so-subtle errors ? |
| 815 | They could be caught at compile time since all the necessary information is there. |
| 816 | |
| 817 | Well this is just what this library does. |
| 818 | |
| 819 | Boost.RDB provides bindings to various relational database systems. It supports creating and executing |
| 820 | SQL statements and retrieving the results by means of C++ objects. Most of the time the resulting syntax |
| 821 | is very close to plain SQL. Moreover, Boost.RDB is a good citizen of the type-rich C++ world: all constructs |
| 822 | are statically checked, which eliminates the risks of type errors. If your RDB code compiles, then it |
| 823 | generates correct SQL. Since everything happens at compile-time, the library delivers performance that is |
| 824 | close to hand-written code. |
| 825 | |
| 826 | What it's not |
| 827 | |
| 828 | Boost.RDB does /not/ hide the database behind an abstraction layer. On the contrary, it ambitions |
| 829 | to make the pecularities of each system readily accessible. However, SQL is standardized, and while it's |
| 830 | true that few vendors - if any - comply to the standard in every small detail, most of the SQL code uses constructs |
| 831 | that are portable between vendors. |
| 832 | |
| 833 | Boost.RDB neither attempts to add extra functionality on top of the database (like object-relational mapping). |
| 834 | These tasks belong to higher-level libraries, possibly built on top of Boost.RDB. |