1 /* 2 * DatabaseControllerSqlite.cpp 3 * 4 * Created on: 27 juin 2016 5 * Author: echopin 6 */ 7 8 #include "DatabaseControllerSqlite.h" 9 DatabaseControllerSqlite(const DatabaseModel & databaseModel)10DatabaseControllerSqlite::DatabaseControllerSqlite(const DatabaseModel& databaseModel) : DatabaseController(databaseModel) 11 { 12 m_db = QSqlDatabase::addDatabase("QSQLITE", QString::number(g_iConnectionIdentifier++)); 13 m_db.setDatabaseName(databaseModel.getDatabasePath()); 14 } 15 ~DatabaseControllerSqlite()16DatabaseControllerSqlite::~DatabaseControllerSqlite() 17 { 18 19 } 20 loadTableDescriptionQuery(const QString & szTableName)21QString DatabaseControllerSqlite::loadTableDescriptionQuery(const QString& szTableName) 22 { 23 return QString("PRAGMA table_info(%0);").arg(szTableName); 24 } 25 loadTableDescriptionResult(const QSqlQuery query)26QStringList DatabaseControllerSqlite::loadTableDescriptionResult(const QSqlQuery query) 27 { 28 QStringList listRowData; 29 QString szNotNull; 30 31 QString szName = query.value(1).toString(); 32 QString szType = query.value(2).toString(); 33 bool bNotNull = query.value(3).toBool(); 34 if(bNotNull == false)//bNotNull doesn't appear in the table, this is a workaround 35 szNotNull = "false"; 36 else 37 szNotNull = "true";//end of workaround 38 QString szDefaultValue = query.value(4).toString(); 39 QString szPk = query.value(5).toString(); 40 listRowData << szName << szType << szNotNull << szDefaultValue << szPk; 41 42 return listRowData; 43 } 44 loadTableDescriptionColumnNames(const QSqlQuery query)45QStringList DatabaseControllerSqlite::loadTableDescriptionColumnNames(const QSqlQuery query) 46 { 47 QStringList listColumnName; 48 listColumnName << "Field" << "Type" << "Not null" << "Default value" << "Primary key"; 49 return listColumnName; 50 } 51 loadTableCreationScriptQuery(const QString & szTableName)52QString DatabaseControllerSqlite::loadTableCreationScriptQuery(const QString& szTableName) 53 { 54 return QString("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = '"+szTableName+"';"); 55 } 56 makeTableCreationScriptQueryResult(const QSqlQuery query)57QString DatabaseControllerSqlite::makeTableCreationScriptQueryResult(const QSqlQuery query) 58 { 59 return QString(query.value(0).toString()); 60 } 61 listColumnNames(const QString & szTableName)62QStringList DatabaseControllerSqlite::listColumnNames(const QString& szTableName) 63 { 64 QStringList szListColumnName; 65 QSqlQuery tableInfoQuery(m_db); 66 tableInfoQuery.exec(loadTableDescriptionQuery(szTableName)); 67 while (tableInfoQuery.next()) 68 { 69 QString szName = tableInfoQuery.value(1).toString(); 70 szListColumnName += szName; 71 } 72 return szListColumnName; 73 } 74