正在考虑如果封装数据库操作,以便隐藏更多数据库的细节,让不懂 SQL 的开发者可以用 C++ 来描述他所要做的。 使用模板、操作符重载,也许我们能写出 这样的代码:
struct Item { int id; int value; int useless; };
Database<MYSQL> db("database_name");
db.Open( "root:1234@connect" );
Table<Item> table( "TableItem" );
Field id=table( "id", &Item::value );
Field value=table( "value", &Item::value );
// 下面的语句等同
// SELECT id, value FROM TableItem WHERE id==15 AND value is not null ORDER BY id LIMIT 0, 10
Query q( id, value );
q[ ( id==15 ) && !IsNull(&Item::value) ].OrderBy( id ).Limit( 0, 10 );
vector< Item > result;
Recordset rs=Db.query( q );
result.assign( rs.begin(), rs.end() );
ps: 打算把这个库叫做 cata,目前处于构思阶段 :)