20#include <kexidb/fieldlist.h>
21#include <kexidb/object.h>
31 : m_fields_by_name(1009, false)
33 m_fields.setAutoDelete( owner );
39 : m_fields_by_name( fl.m_fields_by_name.size() )
41 m_fields.setAutoDelete( fl.m_fields.autoDelete() );
49 if (f_it.current()->m_parent == &fl)
58 delete m_autoinc_fields;
66 m_sqlFields = TQString();
67 delete m_autoinc_fields;
76 if (index>m_fields.count()) {
77 KexiDBFatal << "FieldList::insertField(): index (" << index << ") out of range" << endl;
80 if (!m_fields.insert(index, field))
82 if (!field->name().isEmpty())
84 m_sqlFields = TQString();
88void FieldList::renameField( const TQString& oldName, const TQString& newName)
93void FieldList::renameField( KexiDB::Field *field, const TQString& newName)
96 KexiDBFatal << "FieldList::renameField() no field found "
97 << (field ? TQString( "\"%1\"").arg(field->name()) : TQString()) << endl;
117 m_fields.remove(field);
118 m_sqlFields = TQString();
135 for (; (field = it.current())!=0; ++it) {
151#define _ADD_FIELD(fname) \
153 if (fname.isEmpty()) return fl; \
154 f = m_fields_by_name[fname]; \
155 if (!f) { KexiDBWarn << subListWarning1(fname) << endl; delete fl; return 0; } \
159static TQString subListWarning1( const TQString& fname) {
160 return TQString( "FieldList::subList() could not find field \"%1\"").arg(fname);
164 const TQString& n3, const TQString& n4,
165 const TQString& n5, const TQString& n6,
166 const TQString& n7, const TQString& n8,
167 const TQString& n9, const TQString& n10,
168 const TQString& n11, const TQString& n12,
169 const TQString& n13, const TQString& n14,
170 const TQString& n15, const TQString& n16,
171 const TQString& n17, const TQString& n18)
202 for(TQStringList::ConstIterator it = list.constBegin(); it != list.constEnd(); ++it) {
212 foreach(TQValueList<uint>::ConstIterator, it, list) {
215 KexiDBWarn << TQString( "FieldList::subList() could not find field at position %1").arg(*it) << endl;
231 r += it.current()->name().lower();
238 const TQString& separator, const TQString& tableAlias, int drvEscaping)
245 const TQString tableAliasAndDot( tableAlias.isEmpty() ? TQString() : (tableAlias + ".") );
251 result += (tableAliasAndDot + driver-> escapeIdentifier( it.current()->name(), drvEscaping ));
257 const TQString& separator, const TQString& tableAlias, int drvEscaping)
259 if (!m_sqlFields.isEmpty())
268 if (!m_autoinc_fields) {
273 m_autoinc_fields->append( f_it.current() );
277 return m_autoinc_fields;
Generic database abstraction.
TQString escapeIdentifier(const TQString &str, int options=EscapeDriver|EscapeAsNecessary) const Driver-specific identifier escaping (e.g. for a table name, db name, etc.)
virtual void removeField(KexiDB::Field *field)
FieldList(bool owner=false)
FieldList * subList(const TQString &n1, const TQString &n2=TQString(), const TQString &n3=TQString(), const TQString &n4=TQString(), const TQString &n5=TQString(), const TQString &n6=TQString(), const TQString &n7=TQString(), const TQString &n8=TQString(), const TQString &n9=TQString(), const TQString &n10=TQString(), const TQString &n11=TQString(), const TQString &n12=TQString(), const TQString &n13=TQString(), const TQString &n14=TQString(), const TQString &n15=TQString(), const TQString &n16=TQString(), const TQString &n17=TQString(), const TQString &n18=TQString())
FieldList & addField(Field *field)
Field::List * autoIncrementFields()
virtual TQString debugString()
TQDict< Field > m_fields_by_name Fields collected by name. Not used by QuerySchema.
TQString sqlFieldsList(Driver *driver, const TQString &separator=TQString::fromLatin1(","), const TQString &tableAlias=TQString(), int drvEscaping=Driver::EscapeDriver|Driver::EscapeAsNecessary)
TQStringList names() const
virtual FieldList & insertField(uint index, Field *field)
virtual Field * copy() const
virtual TQString debugString() const
void setName(const TQString &name)
TQPtrList< Field > List list of fields
FieldList * m_parent In most cases this points to a TableSchema object that field is assigned.
bool isAutoIncrement() const
TQPtrListIterator< Field > ListIterator iterator for list of fields
High-level database connectivity library with database backend drivers.
|