diff SqliteDBLink.cpp @ 88:6e1d4d2fc49b

Prepare size query only once.
author Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
date Thu, 10 Oct 2013 16:53:06 +0200
parents 9e337bd96bd3
children 7b7a959c993b
line wrap: on
line diff
--- a/SqliteDBLink.cpp	Thu Oct 10 16:12:41 2013 +0200
+++ b/SqliteDBLink.cpp	Thu Oct 10 16:53:06 2013 +0200
@@ -34,10 +34,19 @@
     throw SQLException("No database");
   }
 
+
+  preparedSizePrefixQuery = new QSqlQuery(db);
+  preparedSizePrefixQuery->prepare("SELECT * FROM files WHERE path LIKE :prefix AND size = :size");
+
+  preparedSizeQuery = new QSqlQuery(db);
+  preparedSizeQuery->prepare("SELECT * FROM files WHERE size = :size");
+
 }
 
 SqliteDBLink::~SqliteDBLink()
 {
+  delete preparedSizePrefixQuery;
+  delete preparedSizeQuery;
   db.close();
 }
 
@@ -201,17 +210,13 @@
 const QList<FileDBLink::dbinf_ptr_t>
 SqliteDBLink::filesWithSize(quint64 size, const QString& prefix) const
 {
-  QList<FileDBLink::dbinf_ptr_t > values;
+  QList<dbinf_ptr_t > values;
 
-  QSqlQuery query(db);
+  QSqlQuery & query = (prefix.size() > 0) ? *preparedSizePrefixQuery : *preparedSizeQuery;
 
   if (prefix.size() > 0) {
-    query.prepare("SELECT * FROM files WHERE path LIKE :prefix AND size = :size");
     query.bindValue(":prefix", QString("%1%").arg(prefix));
   }
-  else {
-    query.prepare("SELECT * FROM files WHERE size = :size");
-  }
   query.bindValue(":size", QString("%1%").arg(size));