void SimpleDBStorage::Save(QString _table) { if (!IsSaveRequired()) return; MSqlBindings bindings; QString querystr = QString("SELECT * FROM " + _table + " WHERE " + GetWhereClause(bindings) + ';'); MSqlQuery query(MSqlQuery::InitCon()); query.prepare(querystr); query.bindValues(bindings); if (!query.exec()) { MythDB::DBError("SimpleDBStorage::Save() query", query); return; } if (query.isActive() && query.next()) { // Row already exists // Don"t change this QString. See the CVS logs rev 1.91. MSqlBindings bindings; querystr = QString("UPDATE " + _table + " SET " + GetSetClause(bindings) + " WHERE " + GetWhereClause(bindings) + ';'); query.prepare(querystr); query.bindValues(bindings); if (!query.exec()) MythDB::DBError("SimpleDBStorage::Save() update", query); } else { // Row does not exist yet MSqlBindings bindings; querystr = QString("INSERT INTO " + _table + " SET " + GetSetClause(bindings) + ';'); query.prepare(querystr); query.bindValues(bindings); if (!query.exec()) MythDB::DBError("SimpleDBStorage::Save() insert", query); } }
void SimpleDBStorage::Load(void) { MSqlQuery query(MSqlQuery::InitCon()); MSqlBindings bindings; query.prepare( "SELECT CAST(" + GetColumnName() + " AS CHAR)" " FROM " + GetTableName() + " WHERE " + GetWhereClause(bindings)); query.bindValues(bindings); if (!query.exec() || !query.isActive()) { MythDB::DBError("SimpleDBStorage::Load()", query); } else if (query.next()) { QString result = query.value(0).toString(); // a 'NULL' QVariant does not get converted to a 'NULL' QString if (!query.value(0).isNull()) { initval = result; user->SetDBValue(result); } } }
TCHAR * OdbcRecordset::Read(bool bAllowEmptyTable /*= false*/) { static TCHAR szError[128] = {0}; // Build statement tstring szSQL = _T("SELECT "); tstring szWhereClause = GetWhereClause(); szSQL += GetColumns(); szSQL += _T(" FROM "); szSQL += GetTableName(); // Do we have a where clause? Include it. if (!szWhereClause.empty()) { szSQL += _T(" WHERE "); szSQL += szWhereClause; } // Attempt to execute the statement. if (!_dbCommand->Execute(szSQL)) return _dbCommand->GetError(); // Does the table have any rows? // Make sure we allow for tables that can be empty. if (!_dbCommand->hasData()) { if (bAllowEmptyTable) return nullptr; _stprintf(szError, _T("%s la tabla esta vacia."), GetTableName().c_str()); return szError; } do { // This extra result/check potentially slows things down. // It's also not very informative, so this could really use a bit of a rewrite // to better allow for this scenario. if (!Fetch()) { _stprintf(szError, _T("No se han podido selecionar columnas en la tabla %s."), GetTableName().c_str()); return szError; } } while (_dbCommand->MoveNext()); return nullptr; }