私が書いているC++アプリケーションのバックエンドDBとしてSQLiteを使用することを考えています。trolltech サイトと sqlite の両方で関連するドキュメントを読みましたが、情報が少しバラバラに見えます。完全な CRUD の例を示す単純なスニペットはありません。
アプリから SQLite で CRUD アクションを簡単に実行できるようにする一連のヘルパー関数を作成したいと考えています。
次のスミペットは、私が想定しているヘルパー関数の擬似コードです。スタブ関数を「埋める」方法についての提案に感謝します。特にイライラすることの1つは、クエリとクエリが実行されているデータベースとの関係について、どのドキュメントにも明確な言及がないことです-したがって、ある種のデフォルトの接続/テーブルを示唆しています.
私のアプリケーションでは、クエリが実行されるデータベースを明示的に指定できるようにする必要があるため、クエリに含まれるデータベース/テーブルを明示的に指定する方法 (またはその他のデータベース アクション) を回答で詳しく説明すると便利です。 )。
私の疑似コードは以下のとおりです。
#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 クエリで既に行われています - 忘れていました。Tom を指摘してくれてありがとう