Qt Creator 模块学习 —— SQL表格模型

Qt Creator 模块学习 —— SQL表格模型

QSqlTabelMode提供了一个可以修改的模型,并且不需要SQL语句就可以实现数据的增删改查
我通过一个小例子来演示各种操作:
首先在建好项目的ui界面加入以下QPushButton,QLineEdit,QLabel,QTableview并布局:
在这里插入图片描述

然后一个一个来说,我原来的文章中有一篇关于数据库连接的文章。
不会连接数据库的小伙伴可以点击这里:数据库连接

随后我们先把模型加入tableview

model = new QSqlTableModel(this);
    model -> setTable("students");
    model -> select();
    model -> setEditStrategy(QSqlTableModel::OnManualSubmit);
    ui->tableView->setModel(model);

此处我们先建立了QSqlTableModel,使用setTabel为其指定表格,随后查询,此处的 QSqlTableModel::EditStrategy是一个枚举类型,

常量 描述
QSqlTableModel::OnFieldChange 对所有模型的改变会瞬间应用到数据库
QSqlTableModel::OnRowChange 对于一条记录的改变在用户选择另一条记录时被应用
QSqlTableModel::OnManualSubmit 所有改变会在模型中缓存只到调用submitAll()和severAll()

下面每一个功能我都把他的槽函数拿过来大家自行看一下就可以:

添加:

//添加
int rownum = model->rowCount();//获取行数
    int id =10;
    model->insertRow(rownum);
    model->setData(model->index(rownum,0),id);
    model->submitAll();

删除:

//删除
int currow = ui->tableView->currentIndex().row();//确定行数
    model->removeRow(currow);
    int issure = QMessageBox::warning(this,tr("删除提醒"),
                                   tr("确认要删除当前行吗?"),
                                      QMessageBox::Yes,QMessageBox::No);
    if(issure==QMessageBox::No){
    
    
        model->revertAll();
    }
    else{
    
    
        model->submitAll();
    }

修改提交:

//修改提交
   model->database().transaction();
    if(model->submitAll()){
    
    
        if(model->database().commit()){
    
    
            QMessageBox::information(this,"提交提醒","修改成功");
        }
    }
    else{
    
    
        model->database().rollback();
        QMessageBox::information(this,"提交提醒",tr("提交错误1%")
         .arg(model->lastError().text()),QMessageBox::Yes);
    }

修改撤回:

//修改撤回
model->revertAll();

排序:

//升序排序
    model->setSort(0,Qt::AscendingOrder);
    model->select();
//降序排序
    model->setSort(0,Qt::DescendingOrder);
    model->select();

查询:

//查询
    QString name = ui->lineEdit->text();
    model->setFilter(QString("name = '%1'").arg(name));
    model->select();

显示全表:

    model->setTable("students");
    model->select();

猜你喜欢

转载自blog.csdn.net/m0_50210478/article/details/108214283