kexi
KexiDB::RowEditBuffer Class Reference
#include <roweditbuffer.h>
Detailed Description
provides data for single edited database row KexiDB::RowEditBuffer provides data for single edited row, needed to perform update at the database backend. Its advantage over pasing e.g. KexiDB::FieldList object is that EditBuffer contains only changed values.EditBuffer offers two modes: db-aware and not-db-aware. Db-aware buffer addresses a field using references to QueryColumnInfo object, while not-db-aware buffer addresses a field using its name.
Example usage of not-db-aware buffer: QuerySchema *query = ..... EditBuffer buf; buf.insert("name", "Joe"); buf.insert("surname", "Black"); buf.at("name"); //returns "Joe" buf.at("surname"); //returns "Black" buf.at(query->field("surname")); //returns "Black" too Now you can use buf to add or edit records using KexiDB::Connection::updateRow(), KexiDB::Connection::insertRow()
Example usage of db-aware buffer: QuerySchema *query = ..... QueryColumnInfo *ci1 = ....... //e.g. can be obtained from QueryScehma::fieldsExpanded() QueryColumnInfo *ci2 = ....... EditBuffer buf; buf.insert(*ci1, "Joe"); buf.insert(*ci2, "Black"); buf.at(*ci1); //returns "Joe" buf.at(*ci2); //returns "Black" Now you can use buf to add or edit records using KexiDB::Connection::updateRow(), KexiDB::Connection::insertRow()
You can use QMap::clear() to clear buffer contents, QMap::isEmpty() to see if buffer is empty. For more, see QMap documentation.
Notes: added fields should come from the same (common) QuerySchema object. However, this isn't checked at QValue& EditBuffer::operator[]( const Field& f ) level.
Definition at line 74 of file roweditbuffer.h.
Public Types | |
typedef QMap< QString, QVariant > | SimpleMap |
typedef QMap< QueryColumnInfo *, QVariant > | DBMap |
Public Member Functions | |
RowEditBuffer (bool dbAwareBuffer) | |
~RowEditBuffer () | |
bool | isDBAware () const |
void | clear () |
bool | isEmpty () const |
void | insert (QueryColumnInfo &ci, QVariant &val) |
void | insert (const QString &fname, QVariant &val) |
const QVariant * | at (QueryColumnInfo &ci, bool useDefaultValueIfPossible=true) const |
const QVariant * | at (Field &f) const |
const QVariant * | at (const QString &fname) const |
bool | hasDefaultValueAt (QueryColumnInfo &ci) const |
const SimpleMap | simpleBuffer () |
const DBMap | dbBuffer () |
void | debug () |
Protected Attributes | |
SimpleMap * | m_simpleBuffer |
SimpleMap::ConstIterator * | m_simpleBufferIt |
DBMap * | m_dbBuffer |
DBMap::Iterator * | m_dbBufferIt |
QMap< QueryColumnInfo *, bool > * | m_defaultValuesDbBuffer |
QMap< QueryColumnInfo *, bool >::ConstIterator * | m_defaultValuesDbBufferIt |
Member Function Documentation
void KexiDB::RowEditBuffer::insert | ( | QueryColumnInfo & | ci, | |
QVariant & | val | |||
) | [inline] |
void KexiDB::RowEditBuffer::insert | ( | const QString & | fname, | |
QVariant & | val | |||
) | [inline] |
Inserts value val for not-db-aware buffer's column fname.
Definition at line 97 of file roweditbuffer.h.
const QVariant * RowEditBuffer::at | ( | QueryColumnInfo & | ci, | |
bool | useDefaultValueIfPossible = true | |||
) | const |
Useful only for db-aware buffer.
- Returns:
- value for column ci If there is no value assigned for the buffer, this method tries to remember and return default value obtained from ci if useDefaultValueIfPossible is true. Note that if the column is declared as unique (especially: primary key), default value will not be used.
Definition at line 47 of file roweditbuffer.cpp.
const QVariant * RowEditBuffer::at | ( | Field & | f | ) | const |
Useful only for not-db-aware buffer.
- Returns:
- value for field f
Definition at line 71 of file roweditbuffer.cpp.
const QVariant * RowEditBuffer::at | ( | const QString & | fname | ) | const |
Useful only for not-db-aware buffer.
- Returns:
- value for field fname
Definition at line 83 of file roweditbuffer.cpp.
bool KexiDB::RowEditBuffer::hasDefaultValueAt | ( | QueryColumnInfo & | ci | ) | const [inline] |
Useful only for db-aware buffer:.
- Returns:
- true if the value available as at( ci ) is obtained from column's default value
Definition at line 115 of file roweditbuffer.h.
void RowEditBuffer::debug | ( | ) |
The documentation for this class was generated from the following files: