So, I'm looking for a SQL wrapper for C ++ that completely hides any SQL text statements. I just can't find anything, I wonder why all the wrappers there seem to at some point want you to write a SQL text statement, for example:
SELECT * FROM stock WHERE item = 'Hotdog Buns'
here is MySQL ++, for example:
mysqlpp::Query query = conn.query("select * from stock where item = 'Hotdog Buns'");
The most obvious way to do this for me is to create a class that contains properties (columns), with each instance of this class being a row. Therefore, to execute the above request, I would do something like:
// Class defined something like this... class stock_item : public sql::row { public: stock_item() : m_name( NULL ), m_amount( 0 ) {}; ~stock_item() {}; // Statically define the table static void CreateTable( void ) { // Some C++ reflective mechanism sql::column( "name", char[50] ); sql::column( "amount", u32 ); } private: const char* m_name; u32 m_amount; } // Then a table defined like this sql::table<stock_item> stock; // Query function defined something like this... stock GetHotDogBuns( const stock& shopStock ) { stock hotDogBuns = shopStock.Select( stock_item::Name(), "Hotdog Buns" ); return hotDogBuns; }
Now I am not a SQL expert, and I didn’t think about the above code for a very long time, but this is just a logical way to deal with a database if your source code is in C ++ instead of being a database expert. What are the problems with such approach?
Is there an open source library that allows you to access the database in a similar way?
EDIT. The reason I would like something like this is because C ++ programmers using our code should not learn SQL syntax and provide a much more natural environment for coding them. I saw something like this in SilverStripe CMS written in php.
source share