|
| QxSqlQuery () |
|
| QxSqlQuery (const char *query, const QVariantList &values=QVariantList()) |
|
| QxSqlQuery (const QString &query, const QVariantList &values=QVariantList()) |
|
| QxSqlQuery (const QStringList &query) |
|
| QxSqlQuery (const QString &type, const QString &query) |
|
| QxSqlQuery (const QString &type, const QStringList &query) |
|
virtual | ~QxSqlQuery () |
|
QString | query () |
|
QString | queryAt (int idx) const |
|
void | queryAt (int idx, const QString &query) |
|
QVariant | response () const |
|
QString | type () const |
|
bool | isEmpty () const |
|
bool | isDistinct () const |
|
void | clear () |
|
void | resolve (QSqlQuery &query, qx::QxCollection< QString, QVariantList > *pLstExecBatch=NULL) const |
|
void | resolveOutput (QSqlQuery &query, bool bFetchSqlResult) |
|
void | postProcess (QString &sql) const |
|
void | setResponse (const QVariant &v) |
|
void | setType (const QString &s) |
|
QString | getJoinQuery (const QString &relationKey, const QString &relationAlias) |
|
QString | getJoinQueryHash () |
|
QxSqlQuery & | query (const QString &sQuery) |
|
QxSqlQuery & | bind (const QVariant &vValue, QSql::ParamType paramType=QSql::In) |
|
QxSqlQuery & | bind (const QString &sKey, const QVariant &vValue, QSql::ParamType paramType=QSql::In) |
|
QVariant | boundValue (const QString &sKey) const |
|
QVariant | boundValue (int iPosition) const |
|
long | getSqlResultRowCount () const |
|
long | getSqlResultColumnCount () const |
|
QVariant | getSqlResultAt (long row, long column) const |
|
QVariant | getSqlResultAt (long row, const QString &column, bool caseSensitive=false) const |
|
QVector< QVariant > | getSqlResultAt (long row) const |
|
QVector< QString > | getSqlResultAllColumns () const |
|
void | dumpSqlResult () |
|
QxSqlQuery & | setFctOnBeforeSqlPrepare (type_fct_on_before_sql_prepare fct) |
|
void | onBeforeSqlPrepare (QString &sql) |
|
virtual QxSqlQuery & | distinct () |
|
virtual QxSqlQuery & | where (const QString &column) |
|
virtual QxSqlQuery & | where_OpenParenthesis (const QString &column) |
|
virtual QxSqlQuery & | and_ (const QString &column) |
|
virtual QxSqlQuery & | and_OpenParenthesis (const QString &column) |
|
virtual QxSqlQuery & | or_ (const QString &column) |
|
virtual QxSqlQuery & | or_OpenParenthesis (const QString &column) |
|
virtual QxSqlQuery & | openParenthesis () |
|
virtual QxSqlQuery & | closeParenthesis () |
|
virtual QxSqlQuery & | orderAsc (const QStringList &columns) |
|
virtual QxSqlQuery & | orderAsc (const QString &col1) |
|
virtual QxSqlQuery & | orderAsc (const QString &col1, const QString &col2) |
|
virtual QxSqlQuery & | orderAsc (const QString &col1, const QString &col2, const QString &col3) |
|
virtual QxSqlQuery & | orderAsc (const QString &col1, const QString &col2, const QString &col3, const QString &col4) |
|
virtual QxSqlQuery & | orderAsc (const QString &col1, const QString &col2, const QString &col3, const QString &col4, const QString &col5) |
|
virtual QxSqlQuery & | orderAsc (const QString &col1, const QString &col2, const QString &col3, const QString &col4, const QString &col5, const QString &col6) |
|
virtual QxSqlQuery & | orderAsc (const QString &col1, const QString &col2, const QString &col3, const QString &col4, const QString &col5, const QString &col6, const QString &col7) |
|
virtual QxSqlQuery & | orderAsc (const QString &col1, const QString &col2, const QString &col3, const QString &col4, const QString &col5, const QString &col6, const QString &col7, const QString &col8) |
|
virtual QxSqlQuery & | orderAsc (const QString &col1, const QString &col2, const QString &col3, const QString &col4, const QString &col5, const QString &col6, const QString &col7, const QString &col8, const QString &col9) |
|
virtual QxSqlQuery & | orderDesc (const QStringList &columns) |
|
virtual QxSqlQuery & | orderDesc (const QString &col1) |
|
virtual QxSqlQuery & | orderDesc (const QString &col1, const QString &col2) |
|
virtual QxSqlQuery & | orderDesc (const QString &col1, const QString &col2, const QString &col3) |
|
virtual QxSqlQuery & | orderDesc (const QString &col1, const QString &col2, const QString &col3, const QString &col4) |
|
virtual QxSqlQuery & | orderDesc (const QString &col1, const QString &col2, const QString &col3, const QString &col4, const QString &col5) |
|
virtual QxSqlQuery & | orderDesc (const QString &col1, const QString &col2, const QString &col3, const QString &col4, const QString &col5, const QString &col6) |
|
virtual QxSqlQuery & | orderDesc (const QString &col1, const QString &col2, const QString &col3, const QString &col4, const QString &col5, const QString &col6, const QString &col7) |
|
virtual QxSqlQuery & | orderDesc (const QString &col1, const QString &col2, const QString &col3, const QString &col4, const QString &col5, const QString &col6, const QString &col7, const QString &col8) |
|
virtual QxSqlQuery & | orderDesc (const QString &col1, const QString &col2, const QString &col3, const QString &col4, const QString &col5, const QString &col6, const QString &col7, const QString &col8, const QString &col9) |
|
virtual QxSqlQuery & | groupBy (const QStringList &columns) |
|
virtual QxSqlQuery & | groupBy (const QString &col1) |
|
virtual QxSqlQuery & | groupBy (const QString &col1, const QString &col2) |
|
virtual QxSqlQuery & | groupBy (const QString &col1, const QString &col2, const QString &col3) |
|
virtual QxSqlQuery & | groupBy (const QString &col1, const QString &col2, const QString &col3, const QString &col4) |
|
virtual QxSqlQuery & | groupBy (const QString &col1, const QString &col2, const QString &col3, const QString &col4, const QString &col5) |
|
virtual QxSqlQuery & | groupBy (const QString &col1, const QString &col2, const QString &col3, const QString &col4, const QString &col5, const QString &col6) |
|
virtual QxSqlQuery & | groupBy (const QString &col1, const QString &col2, const QString &col3, const QString &col4, const QString &col5, const QString &col6, const QString &col7) |
|
virtual QxSqlQuery & | groupBy (const QString &col1, const QString &col2, const QString &col3, const QString &col4, const QString &col5, const QString &col6, const QString &col7, const QString &col8) |
|
virtual QxSqlQuery & | groupBy (const QString &col1, const QString &col2, const QString &col3, const QString &col4, const QString &col5, const QString &col6, const QString &col7, const QString &col8, const QString &col9) |
|
virtual QxSqlQuery & | limit (int rowsCount, int startRow=0, bool withTies=false) |
|
virtual QxSqlQuery & | like (const QString &val) |
|
virtual QxSqlQuery & | notLike (const QString &val) |
|
virtual QxSqlQuery & | startsWith (const QString &val) |
|
virtual QxSqlQuery & | endsWith (const QString &val) |
|
virtual QxSqlQuery & | containsString (const QString &val) |
|
virtual QxSqlQuery & | isEqualTo (const QVariant &val) |
|
virtual QxSqlQuery & | isNotEqualTo (const QVariant &val) |
|
virtual QxSqlQuery & | isGreaterThan (const QVariant &val) |
|
virtual QxSqlQuery & | isGreaterThanOrEqualTo (const QVariant &val) |
|
virtual QxSqlQuery & | isLessThan (const QVariant &val) |
|
virtual QxSqlQuery & | isLessThanOrEqualTo (const QVariant &val) |
|
virtual QxSqlQuery & | customOperator (const QString &sCustomOperator, const QVariant &val) |
|
virtual QxSqlQuery & | in (const QVariantList &values) |
|
virtual QxSqlQuery & | in (const QVariant &val1) |
|
virtual QxSqlQuery & | in (const QVariant &val1, const QVariant &val2) |
|
virtual QxSqlQuery & | in (const QVariant &val1, const QVariant &val2, const QVariant &val3) |
|
virtual QxSqlQuery & | in (const QVariant &val1, const QVariant &val2, const QVariant &val3, const QVariant &val4) |
|
virtual QxSqlQuery & | in (const QVariant &val1, const QVariant &val2, const QVariant &val3, const QVariant &val4, const QVariant &val5) |
|
virtual QxSqlQuery & | in (const QVariant &val1, const QVariant &val2, const QVariant &val3, const QVariant &val4, const QVariant &val5, const QVariant &val6) |
|
virtual QxSqlQuery & | in (const QVariant &val1, const QVariant &val2, const QVariant &val3, const QVariant &val4, const QVariant &val5, const QVariant &val6, const QVariant &val7) |
|
virtual QxSqlQuery & | in (const QVariant &val1, const QVariant &val2, const QVariant &val3, const QVariant &val4, const QVariant &val5, const QVariant &val6, const QVariant &val7, const QVariant &val8) |
|
virtual QxSqlQuery & | in (const QVariant &val1, const QVariant &val2, const QVariant &val3, const QVariant &val4, const QVariant &val5, const QVariant &val6, const QVariant &val7, const QVariant &val8, const QVariant &val9) |
|
virtual QxSqlQuery & | notIn (const QVariantList &values) |
|
virtual QxSqlQuery & | notIn (const QVariant &val1) |
|
virtual QxSqlQuery & | notIn (const QVariant &val1, const QVariant &val2) |
|
virtual QxSqlQuery & | notIn (const QVariant &val1, const QVariant &val2, const QVariant &val3) |
|
virtual QxSqlQuery & | notIn (const QVariant &val1, const QVariant &val2, const QVariant &val3, const QVariant &val4) |
|
virtual QxSqlQuery & | notIn (const QVariant &val1, const QVariant &val2, const QVariant &val3, const QVariant &val4, const QVariant &val5) |
|
virtual QxSqlQuery & | notIn (const QVariant &val1, const QVariant &val2, const QVariant &val3, const QVariant &val4, const QVariant &val5, const QVariant &val6) |
|
virtual QxSqlQuery & | notIn (const QVariant &val1, const QVariant &val2, const QVariant &val3, const QVariant &val4, const QVariant &val5, const QVariant &val6, const QVariant &val7) |
|
virtual QxSqlQuery & | notIn (const QVariant &val1, const QVariant &val2, const QVariant &val3, const QVariant &val4, const QVariant &val5, const QVariant &val6, const QVariant &val7, const QVariant &val8) |
|
virtual QxSqlQuery & | notIn (const QVariant &val1, const QVariant &val2, const QVariant &val3, const QVariant &val4, const QVariant &val5, const QVariant &val6, const QVariant &val7, const QVariant &val8, const QVariant &val9) |
|
virtual QxSqlQuery & | in_Select (const QxSqlQuery &query) |
|
virtual QxSqlQuery & | notIn_Select (const QxSqlQuery &query) |
|
virtual QxSqlQuery & | isEqualTo_Select (const QxSqlQuery &query) |
|
virtual QxSqlQuery & | isNotEqualTo_Select (const QxSqlQuery &query) |
|
virtual QxSqlQuery & | isNull () |
|
virtual QxSqlQuery & | isNotNull () |
|
virtual QxSqlQuery & | isBetween (const QVariant &val1, const QVariant &val2) |
|
virtual QxSqlQuery & | isNotBetween (const QVariant &val1, const QVariant &val2) |
|
virtual QxSqlQuery & | freeText (const QString &text, const QVariantList &values=QVariantList()) |
|
virtual QxSqlQuery & | addJoinQuery (const QString &relationKeyOrAlias, const QxSqlQuery &joinQuery) |
|
qx::QxSqlQuery : define a user SQL query added to default SQL query builded by QxOrm library, and used by qx::dao::xxx functions to filter elements fetched from database
The class qx::QxSqlQuery (or its typedef qx_query) is used to communicate with database (to filter, to sort, etc.) in two different ways :
- writing manually SQL query ;
- using C++ methods with a syntax similar to SQL (same concept than the great library SubSonic for .Net).
With the first method (writing manually SQL query), you can use some optimizations specific for each database. The second method (using C++ code to build SQL query) binds automatically SQL parameters without using qx::QxSqlQuery::bind() function.
Here is an example with qx::QxSqlQuery class writing manually a SQL query :
query.bind(
":sex", author::female);
QList<author> list_of_female;
for (long l = 0; l < list_of_female.count(); l++) { ; }
qx::QxSqlQuery : define a user SQL query added to default SQL query builded by QxOrm library,...
QSqlError fetch_by_query(const qx::QxSqlQuery &query, T &t, QSqlDatabase *pDatabase=NULL, const QStringList &columns=QStringList())
Fetch a list of objects (retrieve all elements and properties associated) of type T (container regist...
QxOrm library provides 3 styles to write SQL parameters. This style can be modified for a project using the following method qx::QxSqlDatabase::getSingleton()->setSqlPlaceHolderStyle() :
- ph_style_2_point_name : "WHERE author.sex = :sex" (default style) ;
- ph_style_at_name : "WHERE author.sex = @sex" ;
- ph_style_question_mark : "WHERE author.sex = ?".
Here is the same example using C++ code of the class qx::QxSqlQuery (or its typedef qx_query) to build query automatically :
QList<author> list_of_female;
for (long l = 0; l < list_of_female.count(); l++) { ; }
virtual QxSqlQuery & where(const QString &column)
virtual QxSqlQuery & isEqualTo(const QVariant &val)
With C++ methods of qx::QxSqlQuery class, you don't have to bind any SQL parameter, and the syntax is similar to real SQL. All SQL parameters will be provided to database automatically with the following style : qx::QxSqlDatabase::getSingleton()->getSqlPlaceHolderStyle().
Here is an example with many methods of qx::QxSqlQuery class (or its typedef qx_query) :
.
or_(
"id").
in(50, 999, 11, 23, 78945)
.
orderAsc(
"last_name",
"first_name",
"sex")
virtual QxSqlQuery & isBetween(const QVariant &val1, const QVariant &val2)
virtual QxSqlQuery & orderAsc(const QStringList &columns)
virtual QxSqlQuery & and_OpenParenthesis(const QString &column)
virtual QxSqlQuery & like(const QString &val)
virtual QxSqlQuery & isNotNull()
virtual QxSqlQuery & isNotEqualTo(const QVariant &val)
virtual QxSqlQuery & closeParenthesis()
virtual QxSqlQuery & or_(const QString &column)
virtual QxSqlQuery & isLessThanOrEqualTo(const QVariant &val)
virtual QxSqlQuery & isGreaterThan(const QVariant &val)
virtual QxSqlQuery & and_(const QString &column)
virtual QxSqlQuery & in(const QVariantList &values)
virtual QxSqlQuery & limit(int rowsCount, int startRow=0, bool withTies=false)
This code will produce following SQL for MySQL, PostgreSQL and SQLite databases (for Oracle and SQLServer, there is a specific process for limit() method) :
WHERE sex = :sex_1_0
AND age > :age_3_0
OR last_name <> :last_name_5_0
OR first_name LIKE :first_name_7_0
AND ( id <= :id_10_0 AND birth_date BETWEEN :birth_date_12_0_1 AND :birth_date_12_0_2 )
OR id IN (:id_15_0_0, :id_15_0_1, :id_15_0_2, :id_15_0_3, :id_15_0_4)
AND is_deleted IS NOT NULL
ORDER BY last_name ASC, first_name ASC, sex ASC
LIMIT :limit_rows_count_19_0 OFFSET :offset_start_row_19_0
Here is the list of all functions available to use qx::QxSqlQuery class (or its typedef qx_query) :
qx::dao::fetch_by_query<T>()
qx::dao::update_by_query<T>()
qx::dao::delete_by_query<T>()
qx::dao::destroy_by_query<T>()
qx::dao::fetch_by_query_with_relation<T>()
qx::dao::fetch_by_query_with_all_relation<T>()
qx::dao::update_by_query_with_relation<T>()
qx::dao::update_by_query_with_all_relation<T>()
qx::dao::update_optimized_by_query<T>()
qx::QxRepository<T> : repository to provide a common interface to communicate with database
qx::QxSession : define a session to manage automatically database transactions (using C++ RAII)
long count(const qx::QxSqlQuery &query=qx::QxSqlQuery(), QSqlDatabase *pDatabase=NULL)
Return the number of lines in the table (database) mapped to the C++ class T (registered into QxOrm c...
Root namespace for all QxOrm library features.
Note : those functions have 2 other optionals parameters :
- const QStringList & columns : to indicate columns to fetch (by default, all columns are fetched) ;
- const QStringList & relation : to indicate relations to fetch (one-to-one, one-to-many, many-to-one and many-to-many defined into void qx::register_class<T>() mapping function by class), by default there is no relation fetched.
Other note : it's possible to call a stored procedure using qx::QxSqlQuery class, for example :
query.bind(
":param1",
"myValue1");
query.bind(
":param2", 5024, QSql::InOut);
QVariant vNewValue =
query.boundValue(
":param2");
QX_DLL_EXPORT QSqlError call_query(qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL)
qx::dao::call_query function can be used to call a custom SQL query or a stored procedure
If the stored procedure returns a resultset, you can iterate over each rows and fields using the following methods (after calling qx::dao::call_query() function) :
Other note : to add your own SQL query methods (for example, some databases provide non-standard specifics SQL functions) :
Definition at line 244 of file QxSqlQuery.h.