20#ifndef KEXIDB_CURSOR_H
21#define KEXIDB_CURSOR_H
25#include <tqptrvector.h>
26#include <tqvaluevector.h>
28#include <kexidb/connection.h>
29#include <kexidb/object.h>
100 virtual bool close();
107 TQValueList<TQVariant> queryParameters()
const;
110 void setQueryParameters(
const TQValueList<TQVariant>& params);
118 inline uint
options()
const {
return m_options; }
124 bool isBuffered()
const;
131 void setBuffered(
bool buffered);
141 virtual bool moveLast();
144 virtual bool moveNext();
148 virtual bool movePrev();
165 inline uint
fieldCount()
const {
return m_query ? m_logicalFieldCount : m_fieldCount; }
181 virtual TQVariant
value(uint i) = 0;
200 void setOrderByColumnList(
const TQStringList& columnNames);
203 void setOrderByColumnList(
const TQString& column1,
const TQString& column2 = TQString(),
204 const TQString& column3 = TQString(),
const TQString& column4 = TQString(),
205 const TQString& column5 = TQString());
209 QueryColumnInfo::Vector orderByColumnList()
const;
224 bool deleteAllRows();
250 TQString debugString()
const;
260 Cursor(
Connection* conn,
const TQString& statement, uint options = NoOptions );
269 bool getNextRecord();
275 virtual bool drv_open() = 0;
277 virtual bool drv_close() = 0;
279 virtual void drv_getNextRecord() = 0;
322 TQGuardedPtr<Connection> m_conn;
325 TQString m_rawStatement;
329 bool m_afterLast : 1;
332 bool m_containsROWIDInfo : 1;
350 TQValueList<TQVariant>* m_queryParameters;
353 bool m_readAhead : 1;
356 bool m_at_buffer : 1;
Provides database connection, allowing queries and data modification.
Provides database cursor functionality.
int m_records_in_buf
number of records currently stored in the buffer
virtual void drv_clearBuffer()
TQString rawStatement() const
bool containsROWIDInfo() const
virtual TQString serverResultName()
char m_result
result of a row fetching
FetchResult
possible results of row fetching, used for m_result
virtual TQVariant value(uint i)=0
virtual void storeCurrentRow(RowData &data) const =0
QueryColumnInfo::Vector * m_fieldsExpanded
Useful e.g. for value(int) method when we need access to schema def.
virtual void drv_appendCurrentRecordToBuffer()=0
virtual void drv_bufferMovePointerTo(TQ_LLONG at)=0
Options
Cursor options that describes its behaviour.
virtual int serverResult()
uint m_fieldCount
cached field count information
QueryColumnInfo::Vector * m_orderByColumnList
Used by setOrderByColumnList()
Connection * connection() const
uint m_logicalFieldCount
logical field count, i.e. without intrernal values like ROWID or lookup
virtual void drv_bufferMovePointerNext()=0
virtual void drv_bufferMovePointerPrev()=0
virtual const char ** rowData() const =0
virtual TQString serverErrorMsg()
uint m_options
cursor options that describes its behaviour
bool m_validRecord
true if valid record is currently retrieved @ current position
QuerySchema * query() const
bool m_buffering_completed
true if we already have all records stored in the buffer
virtual void drv_clearServerResult()=0
KexiDB::QuerySchema provides information about database query.
provides data for single edited database row KexiDB::RowEditBuffer provides data for single edited ro...
High-level database connectivity library with database backend drivers.
TQValueVector< TQVariant > RowData
structure for storing single record with type information
KEXI_DB_EXPORT void debug(const QuerySchemaParameterList &list)
Shows debug information for list.
KEXI_DB_EXPORT bool deleteRow(Connection &conn, TableSchema *table, const TQString &keyname, const TQString &keyval)
for convenience