Simplifing the README, updating TODO and adding info to the concurrence list

This commit is contained in:
Sébastien Rombauts 2012-04-09 18:36:25 +02:00
parent da95147cfa
commit cc08116ccb
3 changed files with 54 additions and 49 deletions

View File

@ -45,41 +45,32 @@ in your project code base (not the main.cpp example file).
Tot get started, look at the provided examples in main.cpp, starting by :
```C++
int main (void)
try
{
try
// Open a database file
SQLite::Database db("example.db3");
// Compile a SQL query, containing one parameter (index 1)
SQLite::Statement query(db, "SELECT * FROM test WHERE size > ?");
// Bind the integer value 6 to the first parameter of the SQL query
query.bind(1, 6);
// Loop to execute the query step by step, to get rows of result
while (query.executeStep())
{
// Open a database file
SQLite::Database db("example.db3");
std::cout << "database file opened successfully\n";
// Demonstrate how to get some typed column value
int id = query.getColumn(0);
std::string value = query.getColumn(1);
int size = query.getColumn(2);
// Compile a SQL query, containing one parameter (index 1)
SQLite::Statement query(db, "SELECT * FROM test WHERE size > ?");
std::cout << "statement: " << query.getQuery().c_str()
<< " compiled (" << query.getColumnCount () << " columns)\n";
// Bind the integer value 6 to the first parameter of the SQL query
query.bind(1, 6);
// Loop to execute the query step by step, to get rows of result
while (query.executeStep())
{
// Demonstrate how to get some typed column value
int id = query.getColumn(0);
std::string value = query.getColumn(1);
int size = query.getColumn(2);
std::cout << "row: " << id << ", " << value << ", " << size << "\n";
}
// Reset the query to use it again later
query.reset();
}
catch (std::exception& e)
{
std::cout << "exception: " << e.what() << std::endl;
std::cout << "row: " << id << ", " << value << ", " << size << std::endl;
}
}
catch (std::exception& e)
{
std::cout << "exception: " << e.what() << std::endl;
}
```
For other simple C++ SQLite wrappers look also at:

View File

@ -1,15 +1,18 @@
Add a comparison of others C++ wrappers (code style, C++ design, in code documentation, tests, online documentation, examples, license, UTF-16)
Missing features :
- BindNULL
- Bind(Name)
- LastInsertId
- TableExists
- SetBusyTimout
- getColumnByName ? std::map getRow() ?
- operator<< binding ?
- execScalar() easy wrapper like CppSqlite
- TableExists
- batch mode managing multiple queries semicolon separated
- Function ?
- Agregate ?
Add a full test suite
Add optionnal usage of experimental sqlite3_trace() function to enable statistics

View File

@ -3,13 +3,13 @@ http://stackoverflow.com/questions/120295/what-is-a-good-oo-c-wrapper-for-sqlite
http://stackoverflow.com/questions/818155/sqlite-alternatives-for-c
- **sqlite3pp**: uses boost, MIT License (http://code.google.com/p/sqlite3pp/)
- **SQLite++**: uses boost build system, Boost License 1.0 (http://sqlitepp.berlios.de/)
- **CppSQLite**: famous Code Project but old design, BSD License (http://www.codeproject.com/Articles/6343/CppSQLite-C-Wrapper-for-SQLite/)
**sqlite3cc**:
- http://ed.am/dev/sqlite3cc (and https://launchpad.net/sqlite3cc)
**sqlite3cc**: http://ed.am/dev/sqlite3cc/
- v0.1
- Nov 2009, Jan 2012
- (++) modern design, use RAII => can be a source of inspiration for me
- (++) very well documented, in code and with a very good informal presentation
- (+) is maintained (recent), initial release is 0.1.0, January 2012 (started in 2010)
@ -18,20 +18,31 @@ http://stackoverflow.com/questions/818155/sqlite-alternatives-for-c
- (-) a bit complicated : offer many way to do the same thing where I would prefer a clean choice
- (-) thus it does not impose RAII, as it is still possible to open or close a database outside constructor/destructor
- (---) LPGPL : for me, this is a stopper as I would like to be able to use it in commercial products
- bazaar: http://bzr.ed.am/sqlite3cc
- bugtracker: personal: trac is still to be installed to http://dev.ed.am/sqlite3cc
=> inspiration :
- bind named parameters,
- support for different transaction mode
- comment on returning error code instead of exception that shall not be thrown when exepected (!?)
- explain the noncopyable property for RAII design
=> inspiration :
- bind named parameters,
- support for different transaction mode
- comment on returning error code instead of exception that shall not be thrown when exepected (!?)
- explain the noncopyable property for RAII design
**sqdbcpp**:
- (++) new BSD license (http://code.google.com/p/sqdbcpp/)
- (+) CamelCaps
- (+) STL is the only depandancy
- (+) RAII design, with some good ideas,
- (-) but with some unnecessary complexity, and some unused code (RefCount...)
- (-) UTF-8/UTF-16 : the second is not portable
- (--) Not documented
- (---) Not maintained/not finished : contact author !?
**sqdbcpp**: http://code.google.com/p/sqdbcpp/
- Dec 2009 (no more activity)
- (++) new BSD license
- (+) CamelCaps
- (+) STL is the only depandancy
- (+) RAII design, with some good ideas,
- (-) but with some unnecessary complexity, and some unused code (RefCount...)
- (-) UTF-8/UTF-16 : the second is not portable
- (--) Not documented
- (---) Not maintained/not finished : contact author !?
- SVN: http://sqdbcpp.googlecode.com/svn/trunk/
- bugtracker: GoogleCode: http://code.google.com/p/sqdbcpp/issues/list
**sqlite3pp**: http://code.google.com/p/sqlite3pp/
- Sep 2007 to Mar 2009
- (++) MIT License
- (+/-) uses boost (some more dependancies...)
-