Я думаю об использовании SQLite в качестве серверной базы данных для приложения C ++, которое я пишу. Я прочитал соответствующие документы как на сайте trolltech, так и на sqlite, но информация кажется немного несвязной, нет простого фрагмента, показывающего полный пример CRUD.
Я хочу написать набор вспомогательных функций, которые позволят мне легко выполнять действия CRUD в SQLite из моего приложения.
Следующий фрагмент кода является псевдокодом для вспомогательных функций, которые я планирую написать. Буду признателен за предложения по "заполнению" функций заглушки. Одна вещь, которая особенно расстраивает, заключается в том, что ни в одном из документов нет четкого упоминания о взаимосвязи между запросом и базой данных, в которой выполняется запрос - таким образом, предлагается какое-то соединение / таблица по умолчанию.
В моем приложении мне нужно иметь возможность явно указывать базу данных, по которой выполняются запросы, поэтому было бы полезно, если бы в каких-либо ответах было указано, как явно указать базу данных / таблицу, участвующую в запросе (или другое действие базы данных в этом отношении).
Мой псевдокод следует ниже:
#include <boost/shared_ptr.hh>
typedef boost::shared_ptr<QSqlDatabase> dbPtr;
dbPtr createConnection(const QString& conn_type = "QSQLITE", const QString& dbname = ":memory:")
{
dbPtr db (new QSQlDatabase::QSqlDatabase());
if (db.get())
{
db->addDatabase(conn_type);
db->setDatabaseName(dbname);
if (!db.get()->open)
db.reset();
}
return db;
}
bool runQuery(const Qstring& sql)
{
//How does SQLite know which database to run this SQL statement against ?
//How to iterate over the results of the run query?
}
bool runPreparedStmtQuery(const QString query_name, const QString& params)
{
//How does SQLite know which database to run this SQL statement against ?
//How do I pass parameters (say a comma delimited list to a prepared statement ?
//How to iterate over the results of the run query?
}
bool doBulkInsertWithTran(const Qstring& tablename, const MyDataRows& rows)
{
//How does SQLite know which database to run this SQL statement against ?
//How to start/commit|rollback
}
В случае, если то, что я спрашиваю, неясно, я спрашиваю, что было бы правильным для реализации каждой из вышеперечисленных функций (возможно, за исключением первой - если, конечно, ее нельзя улучшить).
[Изменить]
Уточнил вопрос, сняв требование явно указывать таблицу (это уже сделано в запросе SQL - я забыл. Спасибо, что указали на это, Том