QSqlQueryModle使用过滤器来完成数据库数据筛选

本文详细介绍了QSqlTableModel在Qt中的使用,包括如何设置过滤器进行精确和模糊查询,以及如何进行排序操作。示例涵盖了字符串、数值和时间查询,同时展示了首字模糊、任意字模糊及多条件模糊查询的方法。此外,还讲解了setSort函数用于列和排序规则的设定,以实现数据的升序或降序排列。
摘要由CSDN通过智能技术生成

原型

void QSqlTableModel::setFilter(const QString &filter)

注意

如果模型已从数据库中填充数据,则模型将其与新滤波器重新选择。否则,将在调用下一次select()中应用过滤器
model的select()会在筛选和排序的条件下,将数据库中符合要求的在mode表格中显示出来

完全匹配查询

1、普通字符串查询
普通字符串,当使用参数的时候必须注意在参数前后加上单引号:

model->setFilter(QObject::tr(“dCode=%1’”).arg(str));

2、数值查询

model->setFilter(QObject::tr(“dCount=%1).arg(cunt));

3、时间查询
时间查询尤其在QT中的QDataTime要将其转换为字符串后进行查询,查询语法与普通字符相同。

模糊查询

1、首字模糊查询

QString filterstr=QObject::tr(“cName like ‘%1%’”).arg(arg1);
model->setFilter(filterstr);

2、任意字模糊查询

QString filterstr=QObject::tr(“cName like ‘%%1%’”).arg(arg1);
model->setFilter(filterstr);

3、两个并列条件模糊查询

QString filterstr=QObject::tr("(cName like ‘%1%’) AND (cPhone like ‘%1%’)").arg(arg1);
model->setFilter(filterstr);

```cpp
4、两个或条件模糊查询
```cpp
QString filterstr=QObject::tr("(cName like ‘%1%’) OR (cPhone like ‘%1%’)").arg(arg1);
model->setFilter(filterstr);

setSort

排序操作。按照列和Qt::SortOrder排序。Qt::SortOrder有升序和降序

void QSqlTableModel::setSort ( int column, Qt::SortOrder order )

参数:

  • column
    排序的列
  • enum Qt::SortOrder
    排序规则
    Qt::AscendingOrder 升序
    Qt::DescendingOrder 降序

设置完排序以后,调用select()刷新数据

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值