qtを使用してデータベースを操作しています。私が必要とすることの 1 つは、入力データとしていくつかのキーセットを使用して、テーブルの一部を取得することです。これは私が使用するコードです:
bool getData(const QList<int> &idlist, QVector<DataStruct> &result)
{
result.resize(idlist.size());
QSqlDatabase &dbase = QSqlDatabase::database(conname); //conname is the QString holding the name of a connection
if (!dbase.transaction())
return false;
QString queryString(
"SELECT <column list> "
"FROM MyTableAS k "
"JOIN JoinedTable AS d ON k.foreign_key=d.primary_key "
"WHERE k.key=:key");
QSqlQuery *query = new QSqlQuery(QSqlDatabase::database(conname));
if(!query->prepare(queryString))
{
delete query;
dbase.rollback();
return false;
}
for (int i = 0; i < idlist.size(); i++)
{
query->bindValue(":key",idlist[i]);
if (!query->exec())
{
delete query;
dbase.rollback();
return false;
}
DataStruct &k = result[i];
memset(&k,0,sizeof(DataStruct));
if(query->next())
{
// fields of structure are mapped to query results
}
//result.append(k);
}
dbase.commit();
delete query;
return true;
}
検索を高速化する方法を考えていました。クエリを変更する必要がありますか? その場合、どのように変更しますか? ここでトランザクションを使用する必要がありますか? データベースの操作方法を別のものに変更する必要がありますか?
少し早いですがお礼を!