Qt5笔记之数据库(五)SQL表格模型QSqlTableModel

教程网址:http://www.qter.org/portal.php?mod=view&aid=57

0.打开tablemodel.pro文件,加上:
QT += coregui sql

注意一定得是加上!若把原来那句改了,会报错

1.添加头文件connection.h

2.main.cpp文件中include connection.h,调用CreateConnection()方法

3.完成后到mainwindow.h文件中,先包含头文件:

include

然后添加私有对象:
QSqlTableModel *model;

4.在tableEdit中显示数据库tablemodel,常放在mainwindow的构造函数中:

 model = new QSqlTableModel(this);
    model->setTable("student");   //选表
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);  //选编辑策略
    model->select(); //选取整个表的所有行  相当于select all

    //不显示name属性列,如果这时添加记录,则该属性的值添加不上
    //model->removeColumn(1);

    ui->tableView->setModel(model);   //显示在tableView中

    //使其不可编辑
    //ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
  1. 在mainwindow.cpp中加上如下内容,方便后面的增删改查

    include "QMessageBox"

    include "QSqlError"

6.提交:model->database().transaction(); //开始事务操作
if (model->submitAll()) {
model->database().commit(); //提交
} else {
model->database().rollback(); //回滚
QMessageBox::warning(this, tr("tableModel"),
tr("数据库错误: %1")
.arg(model->lastError().text()));
}

6.撤销(若未提交则可撤销所有更改)
model->revertAll();

7.添加:改善了原教程中的主键默认值

int rowNum = model->rowCount(); //获得表的行数
//人工递增主键id
QSqlQuery query;
query.exec("select max(id) from student");
query.first() ;
int id = query.value(0).toInt() + 1;
//添加
model->insertRow(rowNum); //添加一行
model->setData(model->index(rowNum,0),id);
//model->submitAll(); //可以直接提交

转载于:https://www.cnblogs.com/YuQiao0303/p/9709768.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值