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