TSqlQueryV2 Class
数据库查询器 More...
Header: | #include <TSqlQueryV2> |
Inherits: | QObject |
Public Functions
TSqlQueryV2(QObject *iParent = 0) | |
TSqlQueryV2(QSqlDatabase iDatabase, QObject *iParent = 0) | |
~TSqlQueryV2() |
- 31 public functions inherited from QObject
Public Slots
bool | addField(const QString &iTableStr, const QVariantMap &iFieldStructVarMap) |
bool | alterField(const QString &iTableStr, const QVariantMap &iFieldStructVarMap) |
void | batchInsert(const QString &iTableStr, const QStringList &iFields, const QVariantList &iDataList) |
void | batchSql(const QString &iSqlStr, const QVariantList &iDataList) |
bool | begin(bool iCheckConnectionBol = true) |
void | clearError() |
bool | close() |
int | commit() |
bool | createTable(const QString &iTableStr, const QVariantMap &iTableStructVarMap) |
QString | databaseType() const |
int | deleteRow(const TSqlDeleterV2 &iSqlDeleter) |
int | deleteRow(const QVariantMap &iDataMap) |
int | deleteRow(const QString &iTableStr, const QVariant &iWhere) |
bool | dropField(const QString &iTableStr, const QString &iFieldNameStr) |
bool | dropTable(const QString &iTableStr) |
bool | execSql(const QString &iSqlStr) |
QStringList | getFieldList(const QString &iTableStr) |
QString | getNow() |
QStringList | getTableList() |
QVariantMap | getTableStruct(const QString &iTableStr) |
QString | getToday() |
QVariant | insertRow(const TSqlInserterV2 &iSqlInserter) |
QVariant | insertRow(const QVariantMap &iDataMap) |
QVariant | insertRow(const QString &iTableStr, const QVariantMap &iDataMap, const QStringList &iFields, bool iReturnLastInsertId = false, const QString &iReturnField = "") |
bool | isConnected() |
bool | isFieldExists(const QString &iTableStr, const QString &iFieldStr) |
bool | isTableExists(const QString &iTableStr) |
TError | lastError() |
bool | open(bool iCheckConnectionBol = true) |
bool | renameTable(const QString &iSrctableStr, const QString &iDesttableStr) |
QVariant | replaceRow(const TSqlInserterV2 &iSqlInserter) |
QVariant | replaceRow(const QVariantMap &iDataMap) |
QVariant | replaceRow(const QString &iTableStr, const QVariantMap &iDataMap, const QStringList &iUniqueFields, const QVariantMap &iUpdatePolicy = QVariantMap(), const QStringList &iUpdateFields = QStringList(), const QString &iAutoIncrField = "") |
bool | replaceTableStruct(const QString &iTableStr, const QVariantMap &iTableStructVarMap) |
bool | resetTransNum() |
int | rollback() |
QVariantList | selectArray(const TSqlSelectorV2 &iSqlSelector) |
QVariantList | selectArray(const QVariantMap &iDataMap) |
QVariantList | selectArray(const QString &iSqlStr, const QVariantMap &iFieldFormat, const QVariantMap iParamMap = QVariantMap()) |
QVariantList | selectArrayArray(const TSqlSelectorV2 &iSqlSelector) |
QVariantList | selectArrayArray(const QVariantMap &iDataMap) |
QVariantList | selectArrayArray(const QString &iSqlStr, const QVariantMap &iFieldFormat, const QVariantMap iParamMap = QVariantMap()) |
QVariantMap | selectArrayData(const TSqlSelectorV2 &iSqlSelector) |
QVariantMap | selectArrayData(const QVariantMap &iDataMap) |
QVariantMap | selectArrayData(const QString &iSqlStr, const QVariantMap &iFieldFormat, const QVariantMap iParamMap = QVariantMap()) |
QVariantList | selectArrayMap(const TSqlSelectorV2 &iSqlSelector) |
QVariantList | selectArrayMap(const QVariantMap &iDataMap) |
QVariantList | selectArrayMap(const QString &iSqlStr, const QVariantMap &iFieldFormat, const QVariantMap iParamMap = QVariantMap()) |
QVariantList | selectArrayValue(const TSqlSelectorV2 &iSqlSelector) |
QVariantList | selectArrayValue(const QVariantMap &iDataMap) |
QVariantList | selectArrayValue(const QString &iSqlStr, const QString &iValueField, const QVariantMap &iFieldFormat = QVariantMap(), const QVariantMap iParamMap = QVariantMap()) |
int | selectCount(const TSqlSelectorV2 &iSqlSelector) |
QVariantMap | selectMap(const TSqlSelectorV2 &iSqlSelector) |
QVariantMap | selectMap(const QVariantMap &iDataMap) |
QVariantMap | selectMap(const QString &iSqlStr, const QVariantMap &iFieldFormat, const QVariantMap iParamMap = QVariantMap()) |
QVariantMap | selectMapMap(const TSqlSelectorV2 &iSqlSelector) |
QVariantMap | selectMapMap(const QVariantMap &iDataMap) |
QVariantMap | selectMapMap(const QString &iSqlStr, const QString &iKeyField, const QVariantMap &iFieldFormat = QVariantMap(), const QVariantMap iParamMap = QVariantMap()) |
QVariantMap | selectMapValue(const TSqlSelectorV2 &iSqlSelector) |
QVariantMap | selectMapValue(const QVariantMap &iDataMap) |
QVariantMap | selectMapValue(const QString &iSqlStr, const QString &iKeyField, const QString &iValueField, const QVariantMap &iFieldFormat = QVariantMap(), const QVariantMap iParamMap = QVariantMap()) |
QVariant | selectValue(const TSqlSelectorV2 &iSqlSelector) |
QVariant | selectValue(const QVariantMap &iDataMap) |
QVariant | selectValue(const QString &iSqlStr, const QVariantMap &iFieldFormat, const QVariantMap iParamMap = QVariantMap()) |
bool | setAutoIncrementStatus(const QString &iTableStr, const QString &iStatus) |
TSqlQueryV2 & | setDatabase(const QSqlDatabase &iDatabase) |
QSqlDatabase | sqlDatabase() const |
int | updateRow(const TSqlUpdaterV2 &iSqlUpdater) |
int | updateRow(const QVariantMap &iDataMap) |
int | updateRow(const QString &iTableStr, const QVariantMap &iDataMap, const QVariant &iWhere, const QVariantMap &iUpdatePolicy = QVariantMap(), const QStringList &iFields = QStringList()) |
- 1 public slot inherited from QObject
Additional Inherited Members
- 1 property inherited from QObject
- 2 signals inherited from QObject
- 1 public variable inherited from QObject
- 10 static public members inherited from QObject
- 9 protected functions inherited from QObject
- 2 protected variables inherited from QObject
Detailed Description
数据库查询器
本类包括对数据表自身的操作:
查看表存在与否 | isTableExists() |
获取所有数据表 | getTableList() |
获取表结构 | getTableStruct() |
创建表 | createTable() |
替换表结构 | replaceTableStruct() |
重命名表 | renameTable() |
删除表 | dropTable() |
增加字段 | addField() |
修改字段 | alterField() |
删除字段 | dropField() |
对数据的增、删、该、查通过传入TSqlInserterV2 TSqlDeleterV2 TSqlUpdaterV2 TSqlSelectorV2 实现
Member Function Documentation
TSqlQueryV2::TSqlQueryV2(QObject *iParent = 0)
默认构造函数
TSqlQueryV2::TSqlQueryV2(QSqlDatabase iDatabase, QObject *iParent = 0)
构造函数,例如
TSqlQueryV2 query{T_SQLCNT_POOL->getSqlDatabase()};
TSqlQueryV2::~TSqlQueryV2()
Destroys the instance of TSqlQueryV2.
[slot]
bool TSqlQueryV2::addField(const QString &iTableStr, const QVariantMap &iFieldStructVarMap)
[slot]
bool TSqlQueryV2::alterField(const QString &iTableStr, const QVariantMap &iFieldStructVarMap)
[slot]
void TSqlQueryV2::batchInsert(const QString &iTableStr, const QStringList &iFields, const QVariantList &iDataList)
批量插入 iFields 为字段名列表 iDataList 为要插入的 字段名-值 列表,如:
iField = ["name", "age"]; iDataList = [ { {"name": "Windy"}, {"age": 13} }, { {"name", "Hemiko"}, {"age", 27}, }, { {"name", "Otto"}, {"age", 500} } ];
[slot]
void TSqlQueryV2::batchSql(const QString &iSqlStr, const QVariantList &iDataList)
批量执行SQL iSqlStr 为待执行SQL iDataList 为要修改的 字段名-值 列表,如:
iSqlStr = "INSERT INTO user(name, age) VALUES(:name, :age)"; iDataList = [ { {"name": "Windy"}, {"age": 13} }, { {"name", "Hemiko"}, {"age", 27}, }, { {"name", "Otto"}, {"age", 500} } ];
[slot]
bool TSqlQueryV2::begin(bool iCheckConnectionBol = true)
开启事物
[slot]
void TSqlQueryV2::clearError()
清楚错误标记
[slot]
bool TSqlQueryV2::close()
关闭数据库连接
[slot]
int TSqlQueryV2::commit()
提交修改
[slot]
bool TSqlQueryV2::createTable(const QString &iTableStr, const QVariantMap &iTableStructVarMap)
[slot]
QString TSqlQueryV2::databaseType() const
返回当前数据库类型,例如:"QPSQL"
[slot]
int TSqlQueryV2::deleteRow(const TSqlDeleterV2 &iSqlDeleter)
删除行,返回受影响的行数
[slot]
int TSqlQueryV2::deleteRow(const QVariantMap &iDataMap)
See also TSqlQueryV2::deleteRow(const TSqlDeleterV2 &iSqlDeleter).
[slot]
int TSqlQueryV2::deleteRow(const QString &iTableStr, const QVariant &iWhere)
Note: 不推荐直接使用此函数
See also TSqlQueryV2::deleteRow(const TSqlDeleterV2 &iSqlDeleter).
[slot]
bool TSqlQueryV2::dropField(const QString &iTableStr, const QString &iFieldNameStr)
[slot]
bool TSqlQueryV2::dropTable(const QString &iTableStr)
[slot]
bool TSqlQueryV2::execSql(const QString &iSqlStr)
直接执行SQL,成功返回 true
失败返回false
See also QSqlQuery::exec(const QString &query).
[slot]
QStringList TSqlQueryV2::getFieldList(const QString &iTableStr)
[slot]
QString TSqlQueryV2::getNow()
[slot]
QStringList TSqlQueryV2::getTableList()
[slot]
QVariantMap TSqlQueryV2::getTableStruct(const QString &iTableStr)
[slot]
QString TSqlQueryV2::getToday()
[slot]
QVariant TSqlQueryV2::insertRow(const TSqlInserterV2 &iSqlInserter)
插入一行,返回最后插入的'id'
See also QSqlQuery::lastInsertId().
[slot]
QVariant TSqlQueryV2::insertRow(const QVariantMap &iDataMap)
See also TSqlQueryV2::insertRow(const TSqlInserterV2 &iSqlInserter).
[slot]
QVariant TSqlQueryV2::insertRow(const QString &iTableStr, const QVariantMap &iDataMap, const QStringList &iFields, bool iReturnLastInsertId = false, const QString &iReturnField = "")
Note: 不推荐直接使用此函数
See also TSqlQueryV2::insertRow(const TSqlInserterV2 &iSqlInserter).
[slot]
bool TSqlQueryV2::isConnected()
检查是否已经连接到数据库
[slot]
bool TSqlQueryV2::isFieldExists(const QString &iTableStr, const QString &iFieldStr)
[slot]
bool TSqlQueryV2::isTableExists(const QString &iTableStr)
[slot]
TError TSqlQueryV2::lastError()
获取错误信息,如果TError::isValid()
返回true,说明错误了
[slot]
bool TSqlQueryV2::open(bool iCheckConnectionBol = true)
打开数据库连接,用于使用默认构造函数并设置数据库连接后
[slot]
bool TSqlQueryV2::renameTable(const QString &iSrctableStr, const QString &iDesttableStr)
[slot]
QVariant TSqlQueryV2::replaceRow(const TSqlInserterV2 &iSqlInserter)
根据iSqlInserter 中的表名及where条件判断数据是否已经存在,如果已存在则更新表
Note: 更新时,当设置了自增字段是,更新操作会返回该字段的值,否则返回受影响的行数; 插入时,返回最后插入的'id'
See also QSqlQuery::lastInsertId().
[slot]
QVariant TSqlQueryV2::replaceRow(const QVariantMap &iDataMap)
See also TSqlQueryV2::replaceRow(const TSqlInserterV2 &iSqlInserter).
[slot]
QVariant TSqlQueryV2::replaceRow(const QString &iTableStr, const QVariantMap &iDataMap, const QStringList &iUniqueFields, const QVariantMap &iUpdatePolicy = QVariantMap(), const QStringList &iUpdateFields = QStringList(), const QString &iAutoIncrField = "")
Note: 不推荐直接使用此函数
See also TSqlQueryV2::replaceRow(const TSqlInserterV2 &iSqlInserter).
[slot]
bool TSqlQueryV2::replaceTableStruct(const QString &iTableStr, const QVariantMap &iTableStructVarMap)
[slot]
bool TSqlQueryV2::resetTransNum()
重置事物计数
[slot]
int TSqlQueryV2::rollback()
回滚
[slot]
QVariantList TSqlQueryV2::selectArray(const TSqlSelectorV2 &iSqlSelector)
通过传入TSqlSelectorV2 返回查询结果列表,例如:
TSqlQueryV2 query(T_SQLCNT_POOL.getSqlDatabase()); TSqlSelectorV2 selector; selector.setTable('sys_user').setField('id, username').setWhere('id in (5, 6)'); QvariantList data = query.selectArray(selector); // => [ 5, 'user5']
[slot]
QVariantList TSqlQueryV2::selectArray(const QVariantMap &iDataMap)
iDataMap 格式见 TSqlSelectorV2::TSqlSelectorV2(const QVariantMap &iDataMap)
See also TSqlQueryV2::selectArray(const TSqlSelectorV2 &iSqlSelector).
[slot]
QVariantList TSqlQueryV2::selectArray(const QString &iSqlStr, const QVariantMap &iFieldFormat, const QVariantMap iParamMap = QVariantMap())
返回查询结果列表
Note: 不推荐直接使用此函数
See also TSqlQueryV2::selectMap(const QString &iSqlStr, const QVariantMap &iFieldFormat, const QVariantMap iParamMap).
[slot]
QVariantList TSqlQueryV2::selectArrayArray(const TSqlSelectorV2 &iSqlSelector)
返回一个Row维列表,例如:
select name, age from valkyrie limit 3;
将返回一个3维列表,每个列表包含个2字段的值,如:
name | age ---------- Kiana 17 ---------- Mei 17 --------- Bronya 14
[slot]
QVariantList TSqlQueryV2::selectArrayArray(const QVariantMap &iDataMap)
See also TSqlQueryV2::selectArrayArray(const TSqlSelectorV2 &iSqlSelector).
[slot]
QVariantList TSqlQueryV2::selectArrayArray(const QString &iSqlStr, const QVariantMap &iFieldFormat, const QVariantMap iParamMap = QVariantMap())
Note: 不推荐直接使用此函数
See also TSqlQueryV2::selectArrayArray(const TSqlSelectorV2 &iSqlSelector).
[slot]
QVariantMap TSqlQueryV2::selectArrayData(const TSqlSelectorV2 &iSqlSelector)
返回一个仅包含两个键("filed"和"data")的map,例如:
select name, age from anti_entropy limit 3;
则返回值为
{ {"field": ["name", "age"]}, {"data": [["Einstein", 22], ["Tesla", 24], ["Planck", 26]]} }
[slot]
QVariantMap TSqlQueryV2::selectArrayData(const QVariantMap &iDataMap)
See also TSqlQueryV2::selectArrayData(const TSqlSelectorV2 &iSqlSelector).
[slot]
QVariantMap TSqlQueryV2::selectArrayData(const QString &iSqlStr, const QVariantMap &iFieldFormat, const QVariantMap iParamMap = QVariantMap())
Note: 不推荐直接使用此函数
See also TSqlQueryV2::selectArrayData(const TSqlSelectorV2 &iSqlSelector).
[slot]
QVariantList TSqlQueryV2::selectArrayMap(const TSqlSelectorV2 &iSqlSelector)
返回查询结果的键值对列表,如:
select name, age from valkyrie limit 3;
则返回的结果为
[ {{"name": "Theresa"}, {"age": 46}}, {{"name": "Fuka"}, {"age": 3000}}, {{"name": "Yae Sakura"}, {"age": 500}} ]
[slot]
QVariantList TSqlQueryV2::selectArrayMap(const QVariantMap &iDataMap)
See also TSqlQueryV2::selectArrayMap(const TSqlSelectorV2 &iSqlSelector).
[slot]
QVariantList TSqlQueryV2::selectArrayMap(const QString &iSqlStr, const QVariantMap &iFieldFormat, const QVariantMap iParamMap = QVariantMap())
Note: 不推荐直接使用此函数
See also TSqlQueryV2::selectArrayMap(const TSqlSelectorV2 &iSqlSelector).
[slot]
QVariantList TSqlQueryV2::selectArrayValue(const TSqlSelectorV2 &iSqlSelector)
与TSqlQueryV2::selectMapValue()
类似,不同点是返回值为 QList<QVariantMap>
See also TSqlQueryV2::selectMapValue().
[slot]
QVariantList TSqlQueryV2::selectArrayValue(const QVariantMap &iDataMap)
See also TSqlQueryV2::selectArrayValue(const TSqlSelectorV2 &iSqlSelector).
[slot]
QVariantList TSqlQueryV2::selectArrayValue(const QString &iSqlStr, const QString &iValueField, const QVariantMap &iFieldFormat = QVariantMap(), const QVariantMap iParamMap = QVariantMap())
Note: 不推荐直接使用此函数
See also TSqlQueryV2::selectArrayValue(const TSqlSelectorV2 &iSqlSelector).
[slot]
int TSqlQueryV2::selectCount(const TSqlSelectorV2 &iSqlSelector)
See also selectValue(const TSqlSelectorV2 &iSqlSelector).
[slot]
QVariantMap TSqlQueryV2::selectMap(const TSqlSelectorV2 &iSqlSelector)
帮助函数,例如
select * from table limit 1;
See also TSqlQueryV2::selectMap(const QString &iSqlStr, const QVariantMap &iFieldFormat, const QVariantMap iParamMap).
[slot]
QVariantMap TSqlQueryV2::selectMap(const QVariantMap &iDataMap)
帮助函数
See also TSqlQueryV2::selectMap(const QString &iSqlStr, const QVariantMap &iFieldFormat, const QVariantMap iParamMap).
[slot]
QVariantMap TSqlQueryV2::selectMap(const QString &iSqlStr, const QVariantMap &iFieldFormat, const QVariantMap iParamMap = QVariantMap())
例如:
iSqlStr = "select basic, detail from table where id = :placeholder1"; iFieldFormat = {{"basic", ""}, {"detail", "json"}}; iParamMap = {{"id", 233}};
以上代码在此函数中拼接为"select basic, detail from table where id = 233" 返回值即以上语句的查询结果,例如:
{ {"basic": "Criss"}, {"detail": { {"name": "Criss"}, {"age": 233}, {"gender": "unknown"}} }
Note: 不推荐直接使用此函数
[slot]
QVariantMap TSqlQueryV2::selectMapMap(const TSqlSelectorV2 &iSqlSelector)
返回
QMap<QString, QMap<QString, QVariant>> 例如,如果设置了
uniqueField
执行SQL select name, age from valkyrie where age > 10; 则返回值为
{ "Kiana": { {"name": "Kiana"}, {"age": 17} }, "Mei": { {"name": "Mei"}, {"age", 17} }, "Bronya": { {"name": "Bronya"}, {"age": 14} } }
也就是说,返回值是由uniqueField
的查询值为键,以查询结果为值组成的
Note: 如果没有设置uniqueField 或者其值为空,则返回值为仅包含一个键为空字符串("")值为查询的最后一条的map
{"": { {"name" : "whatever"}, {"age", 233} }}
[slot]
QVariantMap TSqlQueryV2::selectMapMap(const QVariantMap &iDataMap)
See also TSqlQueryV2::selectMapMap().
[slot]
QVariantMap TSqlQueryV2::selectMapMap(const QString &iSqlStr, const QString &iKeyField, const QVariantMap &iFieldFormat = QVariantMap(), const QVariantMap iParamMap = QVariantMap())
Note: 不推荐直接使用此函数
See also TSqlQueryV2::selectMapMap().
[slot]
QVariantMap TSqlQueryV2::selectMapValue(const TSqlSelectorV2 &iSqlSelector)
与TSqlQueryV2::selectMapMap()
类似,不同点是 iSqlSelector 需要设置valueField。
当uniqueField 为name,valueField 为age时,返回值格式如下:
{ {"Kiana": 17}, {"Mei": 17} }
Note: 返回值格式与TSqlSelectorV2:selectMap()
类似,不同的是TSqlSelectorV2::selectMap()
返回值的键是字段名 而本函数的键是字段名的查询结果
See also TSqlSelectorV2::setValueField() and TSqlQueryV2::selectMap().
[slot]
QVariantMap TSqlQueryV2::selectMapValue(const QVariantMap &iDataMap)
See also TSqlQueryV2::selectMapValue(const TSqlSelectorV2 &iSqlSelector).
[slot]
QVariantMap TSqlQueryV2::selectMapValue(const QString &iSqlStr, const QString &iKeyField, const QString &iValueField, const QVariantMap &iFieldFormat = QVariantMap(), const QVariantMap iParamMap = QVariantMap())
Note: 不推荐直接使用此函数
See also TSqlQueryV2::selectMapValue(const TSqlSelectorV2 &iSqlSelector).
[slot]
QVariant TSqlQueryV2::selectValue(const TSqlSelectorV2 &iSqlSelector)
返回一个variant,类型根据传入参数不同而变化
[slot]
QVariant TSqlQueryV2::selectValue(const QVariantMap &iDataMap)
[slot]
QVariant TSqlQueryV2::selectValue(const QString &iSqlStr, const QVariantMap &iFieldFormat, const QVariantMap iParamMap = QVariantMap())
Note: 不推荐直接使用此函数
See also TSqlQueryV2::selectMap(const QString &iSqlStr, const QVariantMap &iFieldFormat, const QVariantMap iParamMap).
[slot]
bool TSqlQueryV2::setAutoIncrementStatus(const QString &iTableStr, const QString &iStatus)
设置主键值能够插入 PostgreSql,Sqlite不需要设置,SqlServer需要设置.默认是关闭的
[slot]
TSqlQueryV2 &TSqlQueryV2::setDatabase(const QSqlDatabase &iDatabase)
设置数据库连接,通常在使用默认构造函数后需要调用此函数;返回自身引用
[slot]
QSqlDatabase TSqlQueryV2::sqlDatabase() const
返回数据库连接
[slot]
int TSqlQueryV2::updateRow(const TSqlUpdaterV2 &iSqlUpdater)
更新表,返回受影响的行数
[slot]
int TSqlQueryV2::updateRow(const QVariantMap &iDataMap)
See also TSqlQueryV2::updateRow(const TSqlUpdaterV2 &iSqlUpdater).
[slot]
int TSqlQueryV2::updateRow(const QString &iTableStr, const QVariantMap &iDataMap, const QVariant &iWhere, const QVariantMap &iUpdatePolicy = QVariantMap(), const QStringList &iFields = QStringList())
Note: 不推荐直接使用此函数
See also TSqlQueryV2::updateRow(const TSqlUpdaterV2 &iSqlUpdater).