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).