- Timestamp:
- 01/21/10 14:24:08 (13 years ago)
- Branches:
- master, qt5
- Children:
- 06570e9
- Parents:
- d8d5bd2
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/orm/ormrecord.h
rd8d5bd2 r7d7659d 10 10 #include <QDebug> 11 11 12 // INFO:13 // all record items/columns may be defined in one table (1.), or14 // they can be splitted in two separate tables (2.) (eg. for FTS support)15 // 1.) you have to define "static QString const sTableName"16 // 2.) you have to define two table names:17 // "static QString const sTable1Name"18 // "static QString const sTable2Name"19 // and since all record items/columns are handled by one QSqlRecord,20 // you have to also define number of columns that belongs to table 1 (1.), and table 2 (2.)21 // 1.) "static int const sTable1ColCount"22 // 2.) "static int const sTable2ColCount"23 // there are also defined auxiliary methods for 1-Table/2-Tables approach, see bellow24 25 12 class OrmException 26 13 { … … 62 49 static QString selectQuery(); 63 50 static QString updateQuery(); 64 // record items/columns are stored in two tables65 static QString columnsForSelectJoin2T(); // for joining two tables66 static QString selectQueryJoin2T(const QString &key); // for joining two tables67 51 68 52 static QVariant convertToC(QVariant value, QVariant::Type colType); … … 172 156 173 157 template <typename T> 174 QString OrmRecord<T>::columnsForSelectJoin2T()175 {176 Q_ASSERT((T::sTable1ColCount+T::sTable2ColCount) == T::sColumns.count());177 178 QStringList prefixedColumns;179 for (int i=0; i<T::sTable1ColCount; i++)180 {181 prefixedColumns.append(QString("%1.%2").arg(T::sTable1Name, T::sColumns.field(i).name()));182 }183 for (int j=0; j<T::sTable2ColCount; j++)184 {185 prefixedColumns.append(QString("%1.%2").arg(T::sTable2Name, T::sColumns.field(T::sTable1ColCount+j).name()));186 }187 return prefixedColumns.join(",");188 }189 190 template <typename T>191 158 QString OrmRecord<T>::selectQuery() 192 159 { … … 194 161 } 195 162 196 197 template <typename T>198 QString OrmRecord<T>::selectQueryJoin2T(const QString &key)199 {200 return QString("SELECT %1 FROM %2 INNER JOIN %3 ON %4.%5 = %6.%7 ").arg(201 columnsForSelectJoin2T(),202 T::sTable1Name,203 T::sTable2Name,204 T::sTable1Name,205 key,206 T::sTable2Name,207 key);208 }209 210 163 template <typename T> 211 164 QString OrmRecord<T>::updateQuery() 212 165 { 213 return QString("UPDATE %1 ").arg(T::sTable 1Name);166 return QString("UPDATE %1 ").arg(T::sTableName); 214 167 } 215 168
Note: See TracChangeset
for help on using the changeset viewer.