qt中采用model进行增删改查的简单数据库操作实例

4 篇文章 1 订阅

使用model 可以基本避免写sql语句环节,加快了编写速度,view为我们在界面看到的内容,model其实是为数据

如下为编写使用model进行增删改查

首先创建一个名为“info”的数据库文件置于当前qt文件的build目录下,其内容如图

ui 界面设计如下

456

       其中,增加键可以增加一空行,删除可以删除选中的数据,但是每次操作后必须点击确定或者取消,修改数据可以直接双击数据进行修改操作;

以下为源代码

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QSqlTableModel>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private slots:
    void on_buttonDel_clicked();

    void on_buttonSure_clicked();

    void on_buttonCancel_clicked();

    void on_buttonAdd_clicked();

    void on_pushButton_5_clicked();

private:
    Ui::Widget *ui;
    QSqlTableModel *model;
};

#endif // WIDGET_H
#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}
#include "widget.h"
#include "ui_widget.h"
#include<QSqlDatabase>
#include<QDebug>
#include<QMessageBox>
#include<QSqlError>
#include<QSqlQuery>
#include<QVariantList>
#include<QString>
#include<QSqlRecord>


Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    QSqlDatabase a = QSqlDatabase::addDatabase("QSQLITE");   //创建数据库
    a.setDatabaseName("info");    //绑定数据库名称

    if(!a.open())
     {
         QMessageBox::warning(this,"错误",a.lastError().text(),
                              QMessageBox::Ok);
         return;
     }

    model = new QSqlTableModel(this);
    model->setTable("student");           //指定使用哪一个表
    ui->tableView->setModel(model);       //每个view对应一个model
    model->setHeaderData(0,Qt::Horizontal,"学号");   //第0列设置别名
    model->select();   //显示所有的列

    model->setEditStrategy(QSqlTableModel::OnManualSubmit);//设置手动提交后才可以修改

    //ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
    //    设置view不可修改
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_buttonDel_clicked() //再最后一行添加空记录
{
    QSqlRecord record = model->record();//获取空记录行
    int row = model->rowCount(); //获取当前的行号
    model->insertRecord(row,record);  //  插入行
}

void Widget::on_buttonSure_clicked()
{
    model->submitAll();//设置手动提交后,该键点击后会提交在view中的修改内容
}

void Widget::on_buttonCancel_clicked()
{
    model->revertAll();//取消所有的动作
    model->submitAll();//提交动作
}

void Widget::on_buttonAdd_clicked()
{
    //获取圈选的模型
    QItemSelectionModel *sModel = ui->tableView->selectionModel();
    QModelIndexList list = sModel->selectedRows();//取出模型中的索引
    for(int i=0;i<list.size();i++)//删除选中的行
    {
        model->removeRow(list.at(i).row());
    }



}

void Widget::on_pushButton_5_clicked()   //查找
{
    QString str = ui->lineEdit->text();
    QString sname = QString("name = '%1'").arg(str);//打包
    model->setFilter(sname);
    model->select();      //再次显示一次
}

直接运行效果如图:

点击增加后效果如下图,多了一空白行,双击可进行直接修改添加数据

进行删除操作可框选数据,鼠标框选第一行后点击删除  如下图

查找时在输入框输入需要查找的名字如 xiaolong,效果如下:

### 回答1: Qt提供了一套功能强大的数据库模块用于对数据进行增删改查操作。通过Qt数据库模块,我们可以方便地连接和操作各种类型的数据库,如MySQL、SQLite、Oracle等。 在Qt,我们首先需要使用QSqlDatabase类来创建数据库连接。可以通过给定数据库类型、主机名、端口号、数据库名称、用户名和密码等信息来获取一个数据库连接对象。 接下来,我们需要使用QSqlQuery类来执行数据库操作语句,如增加(插入)、删除、修改(更新)和查询操作。QSqlQuery除了可以执行SQL语句,还可以获取查询结果集等操作。通过调用exec()函数可以执行SQL语句,并通过lastError()函数可以获取执行过程的错误信息。 对于增加操作,我们可以使用INSERT INTO语句将数据插入到数据库。可以通过setValuse()函数来绑定参数的值,然后通过调用exec()函数执行INSERT语句。 对于删除操作,我们可以使用DELETE FROM语句来删除数据库的数据。可以通过WHERE子句来指定删除条件,通过调用exec()函数执行DELETE语句。 对于修改操作,我们可以使用UPDATE语句来更新数据库的数据。可以通过SET子句来设置更新的字段和值,通过WHERE子句来指定更新条件。同样,通过调用exec()函数执行UPDATE语句。 对于查询操作,我们可以使用SELECT语句来从数据库检索数据。通过调用exec()函数执行SELECT语句后,可以通过next()函数依次访问查询结果集,并通过value()函数获取相应字段的值。 除了以上常用的操作Qt还提供了各种其他数据库操作函数和类,如事务处理、预处理语句等,以满足不同需求。在操作数据库后,我们需要关闭数据库连接,通过调用close()函数实现。 总之,Qt数据库模块提供了简单易用的接口,使得我们可以方便地对数据进行增删改查操作,有效地管理和操作数据库。 ### 回答2: Qt是一款跨平台的开源C++开发框架,提供了丰富的数据库操作功能,可以方便地对数据进行增删改查操作。 首先,连接数据库。使用Qt提供的QSqlDatabase类,可以连接多种类型的数据库,如MySQL、SQLite等。通过设置数据库的连接参数,如主机名、用户名、密码等,可以连接到数据库服务器。 接下来,进行数据的增加。通过执行SQL INSERT语句,可以将新的记录插入到数据库。首先,创建QSqlQuery对象,然后调用exec()方法执行INSERT语句,即可将数据插入到数据库。 然后,进行数据的查询。使用SELECT语句可以从数据库检索出所需的数据。同样,通过创建QSqlQuery对象,调用exec()方法执行SELECT语句,可以获取查询结果。通过遍历结果集,可以获取到每一条记录的数据。 进行数据的修改。使用UPDATE语句可以修改数据库的记录。同样,通过创建QSqlQuery对象,调用exec()方法执行UPDATE语句,即可对数据库进行修改。 最后,进行数据的删除。使用DELETE语句可以从数据库删除记录。同样,通过创建QSqlQuery对象,调用exec()方法执行DELETE语句,即可删除数据库的数据。 总之,Qt提供了方便易用的数据库操作功能,可以通过简单的代码实现数据的增删改查。开发者只需了解基本的SQL语句和Qt数据库操作接口,就可以轻松处理各种数据库操作需求。 ### 回答3: Qt是一个强大的跨平台开发框架,它提供了Qt Sql模块,用于对数据库进行增删改查操作。 1. 增加数据:可以通过Qt提供的QSqlQuery类来执行SQL语句实现数据的插入操作。首先,创建一个QSqlQuery对象,然后使用exec()方法执行插入数据的SQL语句。 2. 删除数据:同样可以使用QSqlQuery类来执行SQL语句实现数据的删除操作。创建QSqlQuery对象,然后使用exec()方法执行删除数据的SQL语句。 3. 修改数据:通过QSqlQuery类,可以执行SQL语句实现数据的修改操作。创建一个QSqlQuery对象,然后使用exec()方法执行修改数据的SQL语句。 4. 查询数据:Qt提供了QSqlQuery类来执行SQL语句实现数据的查询操作。首先,创建一个QSqlQuery对象,然后使用exec()方法执行查询数据的SQL语句。可以通过next()方法迭代获取查询结果集的各条数据,并可以通过value()方法获取具体的字段值。 在进行数据库操作前,需要先建立数据库连接。Qt提供了QSqlDatabase类来管理数据库连接,可以使用addDatabase()方法创建一个数据库连接对象,然后使用setHostName()、setDatabaseName()、setUserName()、setPassword()等方法设置连接信息,最后使用open()方法打开数据库连接。 同样,数据的增删改查操作完成后,需要及时关闭数据库连接,以释放资源。可以使用QSqlDatabase类的close()方法关闭数据库连接。 总结:Qt提供了丰富的类和方法,用于对数据库进行增删改查操作。开发者可以根据具体的需求,利用Qt数据库模块灵活地操作数据库,实现各种数据处理功能。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值