| 240 | } |
| 241 | |
| 242 | bool DBManager::getRecord(const VectorPair& conditions, QVariantMap& results, const QStringList& tColumns, const QStringList& tOrder) const |
| 243 | { |
| 244 | SqlDatabase* idb = getDB(); |
| 245 | SqlQuery query(idb); |
| 246 | |
| 247 | QString sColumns("*"); |
| 248 | if (!tColumns.isEmpty()) |
| 249 | sColumns = tColumns.join(", "); |
| 250 | |
| 251 | QString sOrder(""); |
| 252 | if (!tOrder.isEmpty()) |
| 253 | { |
| 254 | sOrder = " ORDER BY "; |
| 255 | sOrder.append(tOrder.join(", ")); |
| 256 | } |
| 257 | // prep conditions |
| 258 | QStringList prepCond; |
| 259 | QVariantList bindVal; |
| 260 | if (!conditions.isEmpty()) |
| 261 | prepCond << " WHERE"; |
| 262 | |
| 263 | for (const auto& pair : conditions) |
| 264 | { |
| 265 | prepCond << pair.first + "=?"; |
| 266 | bindVal << pair.second; |
| 267 | } |
| 268 | query.prepare(QString("SELECT %1 FROM %2%3%4").arg(sColumns, _table).arg(prepCond.join(" ")).arg(sOrder)); |
| 269 | doAddBindValue(query, bindVal); |
| 270 | |
| 271 | if (!query.exec()) |
| 272 | { |
| 273 | Error(_log, "Failed to get record: '%s' in table: '%s' Error: %s", QSTRING_CSTR(prepCond.join(" ")), QSTRING_CSTR(_table), QSTRING_CSTR(idb->error())); |
| 274 | return false; |
| 275 | } |
| 276 | |
| 277 | // go to first row |
| 278 | query.next(); |
| 279 | |
| 280 | SqlRecord rec = query.record(); |
| 281 | for (unsigned int i = 0; i < rec.count(); i++) |
| 282 | { |
| 283 | results[rec.fieldName(i)] = rec.value(i); |
| 284 | } |
| 285 | |
| 286 | return true; |
| 287 | } |
| 288 | |
| 289 | bool DBManager::getRecords(QVector<QVariantMap>& results, const QStringList& tColumns, const QStringList& tOrder) const |
| 290 | { |