QxOrm
1.5.0
C++ Object Relational Mapping library
|
qx::QxDaoAsync : helper class to execute SQL queries in another thread (asynchronous way) using qx::IxPersistable interface More...
#include <QxDaoAsync.h>
Signals | |
void | queryStarted (qx::dao::detail::QxDaoAsyncParams_ptr pDaoParams) |
void | queryFinished (const QSqlError &daoError, qx::dao::detail::QxDaoAsyncParams_ptr pDaoParams) |
Public Member Functions | |
QxDaoAsync () | |
virtual | ~QxDaoAsync () |
bool | asyncCount (const QString &className, const qx::QxSqlQuery &query=qx::QxSqlQuery(), QSqlDatabase *pDatabase=NULL) |
bool | asyncFetchById (IxPersistable_ptr pToFetch, const QVariant &id=QVariant(), const QStringList &columns=QStringList(), const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL) |
bool | asyncFetchAll (const QString &className, const QStringList &columns=QStringList(), const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL) |
bool | asyncFetchByQuery (const QString &className, const qx::QxSqlQuery &query, const QStringList &columns=QStringList(), const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL) |
bool | asyncInsert (IxPersistable_ptr pToInsert, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL) |
bool | asyncUpdate (IxPersistable_ptr pToUpdate, const qx::QxSqlQuery &query=qx::QxSqlQuery(), const QStringList &columns=QStringList(), const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL) |
bool | asyncSave (IxPersistable_ptr pToSave, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL) |
bool | asyncDeleteById (IxPersistable_ptr pToDelete, const QVariant &id=QVariant(), QSqlDatabase *pDatabase=NULL) |
bool | asyncDeleteAll (const QString &className, QSqlDatabase *pDatabase=NULL) |
bool | asyncDeleteByQuery (const QString &className, const qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL) |
bool | asyncDestroyById (IxPersistable_ptr pToDestroy, const QVariant &id=QVariant(), QSqlDatabase *pDatabase=NULL) |
bool | asyncDestroyAll (const QString &className, QSqlDatabase *pDatabase=NULL) |
bool | asyncDestroyByQuery (const QString &className, const qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL) |
bool | asyncExecuteQuery (const QString &className, qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL) |
bool | asyncCallQuery (qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL) |
bool | isQueryRunning () const |
Protected Member Functions | |
virtual void | run () |
void | startQuery () |
Protected Attributes | |
QMutex | m_mutex |
Mutex => qx::QxDaoAsync is thread-safe. | |
qx::dao::detail::QxDaoAsyncParams_ptr | m_pDaoParams |
Parameters to execute query. | |
Private Slots | |
void | onQueryFinished (const QSqlError &daoError, qx::dao::detail::QxDaoAsyncParams_ptr pDaoParams) |
qx::QxDaoAsync : helper class to execute SQL queries in another thread (asynchronous way) using qx::IxPersistable interface
To use qx::QxDaoAsync helper class : 1- be careful to work only with classes implementing qx::IxPersistable interface ; 2- create an instance of qx::QxDaoAsync type (for example, a property of a QWidget derived class) ; 3- connect a SLOT to the qx::QxDaoAsync::queryFinished() SIGNAL (for example, a SLOT of a QWidget derived class) ; 4- run a query using one of qx::QxDaoAsync::asyncXXXX() methods.
For example, with a MyWidget class :
class MyWidget : public QWidget { Q_OBJECT //... qx::QxDaoAsync m_daoAsync; //... Q_SLOTS: void onQueryFinished(const QSqlError & daoError, qx::dao::detail::QxDaoAsyncParams_ptr pDaoParams); //... };
And here is the implementation of MyWidget class :
MyWidget::MyWidget() : QObject() { //... QObject::connect((& m_daoAsync), SIGNAL(queryFinished(const QSqlError &, qx::dao::detail::QxDaoAsyncParams_ptr)), this, SLOT(onQueryFinished(const QSqlError &, qx::dao::detail::QxDaoAsyncParams_ptr))); //... } void MyWidget::onQueryFinished(const QSqlError & daoError, qx::dao::detail::QxDaoAsyncParams_ptr pDaoParams) { if (! pDaoParams) { return; } qx::QxSqlQuery query = pDaoParams->query; if (! daoError.isValid()) { ; } // If the async query is associated to a simple object, just use 'pDaoParams->pInstance' method qx::IxPersistable_ptr ptr = pDaoParams->pInstance; // If the async query is associated to a list of objects, just use 'pDaoParams->pListOfInstances' method qx::IxPersistableCollection_ptr lst = pDaoParams->pListOfInstances; //... }
Definition at line 170 of file QxDaoAsync.h.
qx::QxDaoAsync::QxDaoAsync | ( | ) |
virtual qx::QxDaoAsync::~QxDaoAsync | ( | ) | [virtual] |
bool qx::QxDaoAsync::asyncCallQuery | ( | qx::QxSqlQuery & | query, |
QSqlDatabase * | pDatabase = NULL |
||
) |
bool qx::QxDaoAsync::asyncCount | ( | const QString & | className, |
const qx::QxSqlQuery & | query = qx::QxSqlQuery() , |
||
QSqlDatabase * | pDatabase = NULL |
||
) |
bool qx::QxDaoAsync::asyncDeleteAll | ( | const QString & | className, |
QSqlDatabase * | pDatabase = NULL |
||
) |
bool qx::QxDaoAsync::asyncDeleteById | ( | IxPersistable_ptr | pToDelete, |
const QVariant & | id = QVariant() , |
||
QSqlDatabase * | pDatabase = NULL |
||
) |
bool qx::QxDaoAsync::asyncDeleteByQuery | ( | const QString & | className, |
const qx::QxSqlQuery & | query, | ||
QSqlDatabase * | pDatabase = NULL |
||
) |
bool qx::QxDaoAsync::asyncDestroyAll | ( | const QString & | className, |
QSqlDatabase * | pDatabase = NULL |
||
) |
bool qx::QxDaoAsync::asyncDestroyById | ( | IxPersistable_ptr | pToDestroy, |
const QVariant & | id = QVariant() , |
||
QSqlDatabase * | pDatabase = NULL |
||
) |
bool qx::QxDaoAsync::asyncDestroyByQuery | ( | const QString & | className, |
const qx::QxSqlQuery & | query, | ||
QSqlDatabase * | pDatabase = NULL |
||
) |
bool qx::QxDaoAsync::asyncExecuteQuery | ( | const QString & | className, |
qx::QxSqlQuery & | query, | ||
QSqlDatabase * | pDatabase = NULL |
||
) |
bool qx::QxDaoAsync::asyncFetchAll | ( | const QString & | className, |
const QStringList & | columns = QStringList() , |
||
const QStringList & | relation = QStringList() , |
||
QSqlDatabase * | pDatabase = NULL |
||
) |
bool qx::QxDaoAsync::asyncFetchById | ( | IxPersistable_ptr | pToFetch, |
const QVariant & | id = QVariant() , |
||
const QStringList & | columns = QStringList() , |
||
const QStringList & | relation = QStringList() , |
||
QSqlDatabase * | pDatabase = NULL |
||
) |
bool qx::QxDaoAsync::asyncFetchByQuery | ( | const QString & | className, |
const qx::QxSqlQuery & | query, | ||
const QStringList & | columns = QStringList() , |
||
const QStringList & | relation = QStringList() , |
||
QSqlDatabase * | pDatabase = NULL |
||
) |
bool qx::QxDaoAsync::asyncInsert | ( | IxPersistable_ptr | pToInsert, |
const QStringList & | relation = QStringList() , |
||
QSqlDatabase * | pDatabase = NULL |
||
) |
bool qx::QxDaoAsync::asyncSave | ( | IxPersistable_ptr | pToSave, |
const QStringList & | relation = QStringList() , |
||
QSqlDatabase * | pDatabase = NULL |
||
) |
bool qx::QxDaoAsync::asyncUpdate | ( | IxPersistable_ptr | pToUpdate, |
const qx::QxSqlQuery & | query = qx::QxSqlQuery() , |
||
const QStringList & | columns = QStringList() , |
||
const QStringList & | relation = QStringList() , |
||
QSqlDatabase * | pDatabase = NULL |
||
) |
bool qx::QxDaoAsync::isQueryRunning | ( | ) | const [inline] |
Definition at line 201 of file QxDaoAsync.h.
void qx::QxDaoAsync::onQueryFinished | ( | const QSqlError & | daoError, |
qx::dao::detail::QxDaoAsyncParams_ptr | pDaoParams | ||
) | [private, slot] |
void qx::QxDaoAsync::queryFinished | ( | const QSqlError & | daoError, |
qx::dao::detail::QxDaoAsyncParams_ptr | pDaoParams | ||
) | [signal] |
void qx::QxDaoAsync::queryStarted | ( | qx::dao::detail::QxDaoAsyncParams_ptr | pDaoParams | ) | [signal] |
virtual void qx::QxDaoAsync::run | ( | ) | [protected, virtual] |
void qx::QxDaoAsync::startQuery | ( | ) | [protected] |
QMutex qx::QxDaoAsync::m_mutex [protected] |
Mutex => qx::QxDaoAsync is thread-safe.
Definition at line 177 of file QxDaoAsync.h.
Parameters to execute query.
Definition at line 178 of file QxDaoAsync.h.