Qt:数据库模型QSqlQueryModel/QSqlTableModel

本文详细介绍了使用Qt进行数据库操作的方法,包括QSqlQueryModel和QSqlTableModel的使用,以及如何执行SQL语句,设置表头,操作数据模型,实现数据的增删改查等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查询模型QSqlQueryModel

1. 实例化模型:QSqlQueryModel model;
2. 表头:model.setHeaderData(0, Qt::Horizotal, "");
3. 执行sql语句:model.setQuery("select * from tableName");
4. 实例化视图:QTableView view;
5. 视图设置数据源:view.setModel(model);

注意:setQuery执行sql语句后,结果集在model中

操作model

行列数:rowCount() /columnCount()
索引:index()
记录:record()
清空:clear()

表格模型QSqlTableModel(操作指定的数据表)

1. 实例化模型:QSqlTableModel model;
2. 指定数据表:model.setTable("tableName");
3. 表头:model.setHeaderData(0, Qt::Horizotal, "");
4. 查询显示数据:model.select();
5. 实例化视图:QTableView view;
6. 设置编辑策略:view.setEditStrategy(QSqlTableModel::OnManualSubmit);
7. 视图设置数据源:view.setModel(model);

操作model

1. 单选(获取当前行)
view->currentIndex().row();
2. 多选
QItemSelectionModel *select = selectionModel();
QModelIndexList list = select->selectrows();
3. 增
QSqlRecord temp = model->record(); // 空记录
model->insertRecord(model->rowCount(), recore);
4. 删
QItemSelectionModel *select = selectionModel();
QModelIndexList list = select->selectrows();
model->removeRows(list.at(0).row(), list.size());
5. 改
QModelIndex modelIndex = currentIndex();
modelIndex.data().toInt(); // 获取当前单元格的值
modelIndex.setData(100);
6. 查
setFilter("id=1");                               筛选
setSort(col, Qt::AscendingOrder);    升序
select();                                             在筛选和排序的条件下,查询结果
7. 事务
tarnsaction() 开启事务
commit()         提交
rollback()       回滚
submitAll()    真正在数据库中执行操作(增删改操作会先保存在model中)
revertAll()     取消修改
8. 根据行列指定单元格
QModelIndex index = model.index(row, col, QModelIndex()); // 索引
model.setData(index, Qvariant());                                              // 数据
qDebug()<<"row: "<<index.row();
qDebug()<<"col: "<<index.column();
qDebug()<<"data: "<<index.data();
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值