qt qtableview 样式表设置单元格_Qt之QSqlQuery的使用

点击上方“Qt学视觉”,选择“星标”公众号重磅干货,第一时间送达

想要学习的同学们还请认真阅读每篇文章,相信你一定会有所收获

1、QSqlQuery的基本用法

    QSqlQuery是能执行任意SQL语句的类,如SELECT、INSERT、UPDATE、DELETE等

    主要函数如下:

  • 1、bool prepare(const QString &query)

    • 设置准备执行的SQL语句,一般用于带参数的SQL语句

  • 2、void bindValue(const QString &placeholder, const QVariant &val, QSql::ParamType paramType = QSql::In)

    • 设置SQL语句中参数的值,以占位符表示参数

  • 3、bool exec()

    • 执行由prepare()和bindValue()设置的SQL语句

  • 4、bool exec(const QString &query)

    • 直接执行一个不带参数的SQL语句

  • 5、bool isActive() const

    • 如果成功执行了exec()函数,就返回true

  • 6、bool isSelect() const

    • 如果执行的SQL语句是SELECT语句,就返回true

  • 7、QSqlRecord record() const

    • 返回当前记录

  • 8、QVariant value(const QString &name) const

    • 返回当前记录名称为name的字段的值

  • 9、bool isNull(const QString &name) const

    • 判断一个字段是否为空,当query非活动、未定位在有效记录、无此字段或字段为空时都返回true

  • 10、int size() const

    • 对于SELECT语句,返回查询到的记录条数,其他语句返回-1

  • 11、int numRowsAffected() const

    • 返回SQL语句影响的记录条数,对于SELECT语句无定义

  • 12、bool first()

    • 定位到第一条记录,isActive和isSelect都为true时才有效

  • 13、bool previous()

    • 定位到上一条记录,isActive和isSelect都为true时才有效

  • 14、bool next()

    • 定位到下一条记录,isActive和isSelect都为true时才有效

  • 15、bool last()

    • 定位到最后一条记录,isActive和isSelect都为true时才有效

  • 16、bool seek(int index, bool relative = false)

    • 定位到指定序号的记录

  • 17、int at() const

    • 返回当前记录的序号

2、QSqlQueryModel和QSqlQuery的联合使用

    QSqlQueryModel可以查询数据并作为数据模型,实现数据的显示。

    QSqlQuery可以执行UPDATE、INSERT、DELETE等SQL语句实现数据的编辑修改

头文件:

#pragma once#include #include "ui_QGuiSql.h"#include #include #include #include #include "QComboboxDelegate.h"class QGuiSql : public QMainWindow{
        Q_OBJECTpublic:    QGuiSql(QWidget* parent = Q_NULLPTR);    ~QGuiSql();private:    Ui::QGuiSql ui;private:    QSqlQueryModel* m_pQryModel; //数据模型    QItemSelectionModel* m_pQrySelection; //选择模型    QDataWidgetMapper* m_pQryDataMapper; //数据映射    void refreshTableView();//移动记录时刷新TableView的当前行    void updateRecord(int recNo); //更新记录private slots:        //QTableView的SelectionModel的行发生了变化,进行处理    void qrySelection_currentRowChanged(const QModelIndex& current, const QModelIndex& previous);    void actRecOpenDB_triggered();//打开数据表    void actRecInsert_triggered();//插入记录    void actRecEdit_triggered();//编辑记录    void actRecDelete_triggered();//删除当前记录    void actRecFirst_triggered();//首记录    void actRecPrevious_triggered();//前一条记录    void actRecNext_triggered();//后一条记录    void actRecLast_triggered();//最后一条记录    void actRecScan_triggered();//涨工资}

源文件

#include "QGuiSql.h"#include #include #include #include #include #include "QDialogData.h"#pragma execution_character_set("utf-8")QGuiSql::QGuiSql(QWidget* parent)    : QMainWindow(parent){
        ui.setupUi(this);    // tableView显示属性设置    ui.tableView->setSelectionBehavior(QAbstractItemView::SelectItems);    ui.tableView->setSelectionMode(QAbstractItemView::SingleSelection);    ui.tableView->setAlternatingRowColors(true);    ui.tableView->resizeColumnsToContents();    ui.tableView->horizontalHeader()->setStretchLastSection(true);    connect(ui.actRecOpenDB, SIGNAL(triggered()), this, SLOT(actRecOpenDB_triggered()));    connect(ui.actRecInsert, SIGNAL(triggered()), this, SLOT(actRecInsert_triggered()));    connect(ui.actRecEdit, SIGNAL(triggered()), this, SLOT(actRecEdit_triggered()));    connect(ui.actRecDelete, SIGNAL(triggered()), this, SLOT(actRecDelete_triggered()));    connect(ui.actRecScan, SIGNAL(triggered()), this, SLOT(actRecScan_triggered()));    connect(ui.actRecFirst, SIGNAL(triggered()), this, SLOT(actRecFirst_triggered()));    connect(ui.actRecPrevious, SIGNAL(tri
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值