3.QT数据库综合案例,模糊查询等操作
1
新建一个项目:
|
Database01.pro |
|
SOURCES main.cpp Contact.cpp QT CONFIG HEADERS Contact.h |
|
Contact.h |
#ifndef CONTACT_H #define CONTACT_H #include <QWidget> #include <QSqlTableModel> #include <QTableView> #include <QLineEdit> #include <QPushButton> class Contact : public QWidget {
Q_OBJECT public: explicit Contact(QWidget *parent); QSqlTableModel* _model; QTableView* _view; QLineEdit* _filter; QPushButton* _add; QPushButton* _del; QPushButton* _reset; QPushButton* _submit; signals: public slots: void slotModelDataChanged(QModelIndex,QModelIndex); void slotFilterChanged(QString filter); }; #endif // CONTACT_H |
|
Contact.cpp |
#include "Contact.h" #include <QVBoxLayout> #include <QHBoxLayout> #include <QSqlRecord> #include <QCompleter> #include <QDebug> Contact::Contact(QWidget *parent) : QWidget(parent) {
//创建一个QSqlTableModel _model = new QSqlTableModel; //创建QTable _view = new QTableView; //view里面设置model _view->setModel(_model); _model->setTable("tcontact");
//手动提交 _model->setEditStrategy(QSqlTableModel::OnManualSubmit); connect(_model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(slotModelDataChanged(QModelIndex,QModelIndex))); _model->select(); // set Layout QVBoxLayout* vBox = new QVBoxLayout(this); vBox->addWidget(_view); QHBoxLayout* hBox = new QHBoxLayout; vBox->addLayout(hBox); //添加add hBox->addWidget(_filter = new QLineEdit, 1); hBox->addWidget(_add=new QPushButton("Add"));
hBox->addWidget(_del=new QPushButton("Del"));
hBox->addWidget(_reset=new QPushButton("Reset"));
hBox->addWidget(_submit=new QPushButton("Submit"));
connect(_add, &QPushButton::clicked, [&](){
QSqlRecord record = _model->record(); _model->insertRecord(-1, record); }); connect(_del, &QPushButton::clicked, [&](){});
connect(_reset, &QPushButton::clicked, [&](){});
connect(_submit, &QPushButton::clicked, [&](){
_model->submitAll(); }); //模糊查询 connect(_filter, SIGNAL(textChanged(QString)), this, SLOT(slotFilterChanged(QString))); slotModelDataChanged(QModelIndex(), QModelIndex()); } void Contact::slotFilterChanged(QString filter) {
if(filter.isEmpty()) {
_model->setFilter("");
_model->select(); return; } // username like filter or password like filter ....... QSqlRecord record = _model->record(); QString modelFilter; for(int i=0; i<record.count(); ++i) {
if(i!=0) {
modelFilter += " or "; } QString field = record.fieldName(i); QString subFilter = QString().sprintf("%s like '%%%s%%'", field.toUtf8().data(), filter.toUtf8().data());
// qDebug() << subFilter; modelFilter += subFilter; } qDebug() << modelFilter; _model->setFilter(modelFilter); _model->select(); } void Contact::slotModelDataChanged(QModelIndex,QModelIndex) {
QStringList strList; for(int i=0; i<_model->rowCount(); ++i) {
QSqlRecord record = _model->record(i); for(int j=0; j<record.count(); ++j) {
QVariant var = record.value(j); if(var.isNull()) continue; strList << var.toString(); } } qDebug() << strList; QCompleter* completer=new QCompleter(strList); _filter->setCompleter(completer); } |
|
main.cpp |
#include <QApplication> #include "Widget05.h" #include <QSqlDatabase> #include <QSqlError> #include <QDebug> #include "Contact.h" int main(int argc,char* argv[]) {
QApplication app(argc,argv); /*QT可以操作 QSLITE QODBC,QPLSQL 这些数据库*/ //下面表示使用mysql数据库,因为这里的db没有用到db,所以可以把它放在main中 //本质:在QT里面打开一个数据库之后,就会保存一个数据库连接, //其它的位置就可以任意使用这个全局的变量了 QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1"); //设置数据库所在位置
db.setUserName("root"); //设置数据库的用户名
db.setPassword("123456"); //设置数据库的密码
db.setDatabaseName("d0718"); //设置数据库名称
bool bRet = db.open(); //打开数据库连接 if(bRet == false) {
//说明可以通过db.lastError()的方式得到错误信息 qDebug() << "error open database" << db.lastError().text(); exit(0); } qDebug() << "open database success"; //注意Widget02要写在上面代码的下面 Contact c; c.show(); return app.exec(); } |
|
运行结果: |
3.QT数据库综合案例,模糊查询等操作的更多相关文章
- IOS开发数据库篇—SQLite模糊查询
IOS开发数据库篇—SQLite模糊查询 一.示例 说明:本文简单示例了SQLite的模糊查询 1.新建一个继承自NSObject的模型 该类中的代码: // // YYPerson.h // 03- ...
- Java数据库学习之模糊查询(like )
Java数据库学习之模糊查询(like ): 第一种方式:直接在SQL语句中进行拼接,此时需要注意的是parm在SQL语句中需要用单引号拼接起来,注意前后单引号之间不能空格 String sql = ...
- C# 调用Access数据库关于like模糊查询的写法
在access查询视图中要使用"*"做模糊匹配,但是在程序中要用%来匹配.在access中:NEIBUBH like '*1234*'在程序中:NEIBUBH like '%123 ...
- 小记------mongodb数据库如何进行模糊查询
// 模糊匹配createTime 是以 2019-07-23 开头 db.getCollection('driver_online_record').find({"createTime ...
- 007.Oracle数据库 , 使用%进行模糊查询
/*Oracle数据库查询日期在两者之间*/ SELECT PKID, OCCUR_DATE, ATA FROM LM_FAULT WHERE ( ( OCCUR_DATE >= to_date ...
- Python使用sql语句对mysql数据库多条件模糊查询
1 def find_worldByName(c_name,continent): 2 print(c_name) 3 print(continent) 4 sql = " SELECT * ...
- Redis 模糊查询删除操作
创建一条测试 数据 查询 创建:set name xiaoming 查询: get name 1.模糊搜索查询 Redis 模糊搜索 keys * 2.删除指定key : # 删除所有以user开头的 ...
- Oracle 数据库基础:数据查询与操作
SELECT uname FROM TUser WHERE uname=‘admin’ SELECT 字段名列表 FROM 表名 WHERE 条件; 在Oracle数据库中,对象是属于模式的,每个账户 ...
- Access数据库的模糊查询到底是用*还是%
今天被用了一下Access数据库,结果被它的模糊查询给折腾了一上午,到底是用*还是%?特此记下来 事情是这样的,我用C#写了个小的窗体程序,访问Access数据库进行一个模糊查询,我先手工往Acces ...
随机推荐
- [HAOI2016]找相同字符
题目描述 给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数.两个方案不同当且仅当这两个子串中有一个位置不同. 输入输出格式 输入格式: 两行,两个字符串s1,s2,长度分别为 ...
- 计蒜客NOIP模拟赛(2)D1T3 深黑幻想
[问题描述] 凡终于发愤图强,决定专心搞OI,不再玩纸牌和坑钱了!没过多久就飘飘然了,总是陷入自己进了集训队的深黑幻想之中. 样听说了之后,决定考一考凡欧拉回路怎么写.样:“我给你出一道题 ...
- 【Aho-Corasick automation 大米饼模板】
自动机要打熟.自动机要打好.自动机要打得美妙. [例子:HDU2222] #include<stdio.h> #include<queue> #include<cstri ...
- hdu 5600 BestCoder Round #67 (div.2)
N bulbs Accepts: 275 Submissions: 1237 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 655 ...
- bzoj4034[HAOI2015]树上操作 树链剖分+线段树
4034: [HAOI2015]树上操作 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 6163 Solved: 2025[Submit][Stat ...
- 华科机考:N阶楼梯上楼
时间限制:1秒空间限制:32768K 题目描述 N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(要求采用非递归) 输入描述: 输入包括一个整数N,(1<=N<90). 输出描 ...
- 我用 tensorflow 实现的“一个神经聊天模型”:一个基于深度学习的聊天机器人
概述 这个工作尝试重现这个论文的结果 A Neural Conversational Model (aka the Google chatbot). 它使用了循环神经网络(seq2seq 模型)来进行 ...
- MySQL Innodb如何找出阻塞事务源头SQL
在MySQL数据库中出现了阻塞问题,如何快速查找定位问题根源?在实验开始前,我们先梳理一下有什么工具或命令查看MySQL的阻塞,另外,我们也要一一对比其优劣,因为有些命令可能在实际环境下可能并不适用. ...
- maven generating project in batch mode hang
最新版已经自己就设置了 设置maven不要从远程服务器上获取catalog,增加参数-DarchetypeCatalog=internal 如何在idea里设置maven参数:
- Luogu P1226 取余运算||快速幂_快速幂
超短代码 #include<iostream> #include<cstdio> using namespace std; long long b,p,k; long long ...