use transactions to make import faster
authorkirilma <kirilma@localhost>
Fri, 9 Apr 2010 12:02:26 +0000 (12:02 +0000)
committerkirilma <kirilma@localhost>
Fri, 9 Apr 2010 12:02:26 +0000 (12:02 +0000)
src/sql/schedulexmlparser.cpp
src/sql/sqlengine.cpp
src/sql/sqlengine.h

index c1c6559..8ce0a68 100644 (file)
@@ -37,6 +37,8 @@ int ScheduleXmlParser::parseData(const QByteArray &aData)
 
     QDomElement scheduleElement = document.firstChildElement("schedule");
 
+    SqlEngine::beginTransaction();
+
     int confId = 0;
     if (!scheduleElement.isNull())
     {
@@ -144,6 +146,7 @@ int ScheduleXmlParser::parseData(const QByteArray &aData)
             } // parsing room elements
         } // parsing day elements
     } // schedule element
+    SqlEngine::commitTransaction();
 
     return confId;
 }
index 90cb989..9c0150c 100644 (file)
@@ -375,6 +375,20 @@ int SqlEngine::searchEvent(int aConferenceId, const QHash<QString,QString> &aCol
     return 1;
 }
 
+bool SqlEngine::beginTransaction()
+{
+    QSqlDatabase db = QSqlDatabase::database();
+
+    return execQuery(db, "BEGIN IMMEDIATE TRANSACTION");
+}
+
+bool SqlEngine::commitTransaction()
+{
+    QSqlDatabase db = QSqlDatabase::database();
+
+    return execQuery(db, "COMMIT");
+}
+
 bool SqlEngine::execQuery(QSqlDatabase &aDatabase, const QString &aQuery)
 {
     //qDebug() << "\nSQL: " << aQuery;
index 68dd5b4..b6fb288 100644 (file)
@@ -37,6 +37,9 @@ class SqlEngine : public QObject
         static void addLinkToDB(QHash<QString,QString> &aLink);
         static void addRoomToDB(QHash<QString,QString> &aRoom);
 
+        static bool beginTransaction();
+        static bool commitTransaction();
+
         // search Events for ....
         static int searchEvent(int conferenceId, const QHash<QString,QString> &columns, const QString &keyword);
     private: