| | 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. |