-
-QSqlQuery &AbstractSqlStorage::Connection::cachedQuery(const QString &queryName, int version) {
- QPair<QString, int> queryId = qMakePair(queryName, version);
- if(_queryCache.contains(queryId)) {
- return *(_queryCache[queryId]);
- }
-
- QSqlQuery *query = new QSqlQuery(QSqlDatabase::database(name()));
- query->prepare(_storageEngine->queryString(queryName, version));
- _queryCache[queryId] = query;
- return *query;
-}
-
-void AbstractSqlStorage::Connection::syncCachedQueries() {
- QHash<QPair<QString, int>, QSqlQuery *>::iterator iter = _queryCache.begin();
- while(iter != _queryCache.end()) {
- delete *iter;
- iter = _queryCache.erase(iter);
- }
- QSqlDatabase db = QSqlDatabase::database(name(), false);
- if(db.isOpen())
- db.commit();
-}