20#include "kexidbcursor.h"
21#include "kexidbconnection.h"
23#include <kexidb/tableschema.h>
24#include <kexidb/queryschema.h>
34 this->addFunction0<Kross::Api::Variant>(
"open",
this, &KexiDBCursor::open );
35 this->addFunction0<Kross::Api::Variant>(
"isOpened",
this, &KexiDBCursor::isOpened );
36 this->addFunction0<Kross::Api::Variant>(
"reopen",
this, &KexiDBCursor::reopen );
37 this->addFunction0<Kross::Api::Variant>(
"close",
this, &KexiDBCursor::close );
38 this->addFunction0<Kross::Api::Variant>(
"moveFirst",
this, &KexiDBCursor::moveFirst );
39 this->addFunction0<Kross::Api::Variant>(
"moveLast",
this, &KexiDBCursor::moveLast );
40 this->addFunction0<Kross::Api::Variant>(
"movePrev",
this, &KexiDBCursor::movePrev );
41 this->addFunction0<Kross::Api::Variant>(
"moveNext",
this, &KexiDBCursor::moveNext );
42 this->addFunction0<Kross::Api::Variant>(
"bof",
this, &KexiDBCursor::bof );
43 this->addFunction0<Kross::Api::Variant>(
"eof",
this, &KexiDBCursor::eof );
44 this->addFunction0<Kross::Api::Variant>(
"at",
this, &KexiDBCursor::at );
45 this->addFunction0<Kross::Api::Variant>(
"fieldCount",
this, &KexiDBCursor::fieldCount );
46 this->addFunction1<Kross::Api::Variant, Kross::Api::Variant>(
"value",
this, &KexiDBCursor::value );
47 this->addFunction2<Kross::Api::Variant, Kross::Api::Variant, Kross::Api::Variant>(
"setValue",
this, &KexiDBCursor::setValue );
48 this->addFunction0<Kross::Api::Variant>(
"save",
this, &KexiDBCursor::save );
59void KexiDBCursor::clearBuffers()
61 TQMap<TQ_LLONG, Record*>::ConstIterator
62 it( m_modifiedrecords.constBegin() ), end( m_modifiedrecords.constEnd() );
63 for( ; it != end; ++it)
65 m_modifiedrecords.clear();
68const TQString KexiDBCursor::getClassName()
const
70 return "Kross::KexiDB::KexiDBCursor";
73bool KexiDBCursor::open() {
return m_cursor->
open(); }
74bool KexiDBCursor::isOpened() {
return m_cursor->
isOpened(); }
75bool KexiDBCursor::reopen() {
return m_cursor->
reopen(); }
76bool KexiDBCursor::close() {
return m_cursor->
close(); }
78bool KexiDBCursor::moveFirst() {
return m_cursor->
moveFirst(); }
79bool KexiDBCursor::moveLast() {
return m_cursor->
moveLast(); }
80bool KexiDBCursor::movePrev() {
return m_cursor->
movePrev(); }
81bool KexiDBCursor::moveNext() {
return m_cursor->
moveNext(); }
83bool KexiDBCursor::bof() {
return m_cursor->
bof(); }
84bool KexiDBCursor::eof() {
return m_cursor->
eof(); }
86TQ_LLONG KexiDBCursor::at() {
return m_cursor->
at(); }
87uint KexiDBCursor::fieldCount() {
return m_cursor->
fieldCount(); }
89TQVariant KexiDBCursor::value(uint index)
91 return m_cursor->
value(index);
94bool KexiDBCursor::setValue(uint index, TQVariant value)
98 kdDebug() <<
"Invalid query in KexiDBCursor::setValue index=" << index <<
" value=" << value << endl;
104 kdDebug() <<
"Invalid column in KexiDBCursor::setValue index=" << index <<
" value=" << value << endl;
108 const TQ_LLONG position = m_cursor->
at();
109 if(! m_modifiedrecords.contains(position))
110 m_modifiedrecords.replace(position,
new Record(m_cursor));
111 m_modifiedrecords[position]->buffer->insert(*column, value);
115bool KexiDBCursor::save()
117 if(m_modifiedrecords.count() < 1)
127 TQMap<TQ_LLONG, Record*>::ConstIterator
128 it( m_modifiedrecords.constBegin() ), end( m_modifiedrecords.constEnd() );
129 for( ; it != end; ++it) {
130 bool b = m_cursor->
updateRow(it.data()->rowdata, * it.data()->buffer, m_cursor->
isBuffered());
Provides database cursor functionality.
bool updateRow(RowData &data, RowEditBuffer &buf, bool useROWID=false)
virtual TQVariant value(uint i)=0
QuerySchema * query() const
Helper class that assigns additional information for the column in a query.
KexiDB::QuerySchema provides information about database query.
QueryColumnInfo::Vector fieldsExpanded(FieldsExpandedOptions options=Default)
The cursor provides a control structure for the successive traversal of records in a result set as re...
KrossKexiDB provides access to the KexiDB database functionality.