Qt5 学生管理系统,实现sql增-删-改-查

学习Qt后即用Qt5.12的版本进一步学习sql增-删-改-查。

第一步:新建Qt项目。

第二步:设计UI界面。

第三步:在pro文件中增加语句

QT       += sql

第四步:.h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include <QSqlDatabase>     //专用于连接、创建数据库
#include <QSqlQuery>        //专用于DML(数据操纵语言)、DDL(数据定义语言)
#include <QSqlQueryModel>
#include <QSqlError>
#include <QDebug>
#include <QMessageBox>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_btn_datasorting_clicked();
    void on_btn_insert_clicked();
    void on_btn_delete_clicked();
    void on_btn_renew_clicked();
    void on_btn_query_clicked();

private: //自定义函数
    void CreateDatabaseFunc();       //创建SQLite数据库
    void CreateTableFunc();          //创建SQLite数据表
    void QueryTableFunc();           //执行查询操作
    void CleanEdit();

    QSqlDatabase sqldb;              //创建Qt和数据库连接
    QSqlQueryModel sqlmodel;         //存储结果集

private:
    Ui::MainWindow *ui;

    QStringList SortWay;
    QStringList ValueWay;

};

#endif // MAINWINDOW_H

第五步:.cpp文件

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("学生管理系统");

    SortWay<<"升序"<<"降序";
    ui->comBox_sort->addItems(SortWay);
    ValueWay<<"id"<<"name"<<"score";
    ui->comBox_value->addItems(ValueWay);

    CreateDatabaseFunc();  //调用函数创建且打开数据库
    CreateTableFunc();     //创建SQLite数据表
    QueryTableFunc();      //查询数据库
}

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

void MainWindow::CreateDatabaseFunc()   //创建且打开SQLite数据库
{
    //1.添加数据库驱动
    sqldb=QSqlDatabase::addDatabase("QSQLITE");

    //2.设置数据库名称
    sqldb.setDatabaseName("student.db");

    //3.打开此数据库是否成功
    if(sqldb.open()==true)
    {
        QMessageBox::information(this,"正确","恭喜你,数据库打开成功!",QMessageBox::Ok);
    }
    else
    {
        QMessageBox::critical(this,"错误","数据库打开失败,请重新检测!",QMessageBox::Ok);
    }
}
void MainWindow::CreateTableFunc()    //创建SQLite数据表
{
    QString strsql;
    QSqlQuery createquery;
    //创建SQL语句
    strsql=QString("CREATE TABLE student ("
                   "id INT PRIMARY KEY NOT NULL,"
                   "name TEXT NOT NULL,"
                   "score REAL NOT NULL)");
    //执行SQL语句
    if(createquery.exec(strsql)==false)
    {
        QMessageBox::critical(this,"失败","数据表创失败,请重新检测!",QMessageBox::Ok);
    }
    else
    {
        QMessageBox::information(this,"成功","恭喜你,数据表创建成功!",QMessageBox::Ok);
    }
}
void MainWindow::QueryTableFunc()   //查询数据库
{
    QString str=QString("SELECT * FROM student");
    sqlmodel.setQuery(str);
    ui->tableView->setModel(&sqlmodel);
}

void MainWindow::on_btn_datasorting_clicked()  //排序
{
    //获取排序列名
    QString value=ui->comBox_value->currentText();
    //获取排序方式名字
    QString condition;
    if(ui->comBox_sort->currentIndex()==0){
        condition="ASC";
    }else{
        condition="DESC";
    }
    QString str=QString("SELECT * FROM student ORDER BY %1 %2").arg(value).arg(condition);
    //查询显示
    sqlmodel.setQuery(str);
    ui->tableView->setModel(&sqlmodel);
}

void MainWindow::on_btn_insert_clicked()   //插入数据
{
    QSqlQuery sqlquery;
    int id=ui->lineEdit_ID->text().toInt();
    QString name=ui->lineEdit_name->text();
    double score=ui->lineEdit_achieve->text().toDouble();

    if(id==0)
    {
        QMessageBox::critical(this,"失败","提示:输入错误?学号不能为0?",QMessageBox::Ok);
        return;
    }
    if(name=="")
    {
        QMessageBox::critical(this,"失败","提示:输入错误?姓名不能为空?",QMessageBox::Ok);
        return;
    }
    if(score<0 || score>100)
    {
        QMessageBox::critical(this,"失败","提示:输入错误?分数范围(0-100)",QMessageBox::Ok);
        return;
    }
    QString strs=QString("INSERT INTO student (id,name,score) VALUES(%1,'%2',%3)"
                         ).arg(id).arg(name).arg(score);
    //执行SQL语句
    if(sqlquery.exec(strs)==false)
    {
        QMessageBox::critical(this,"失败","向数据表插入数据失败,请重新检测!",QMessageBox::Ok);
    }
    else
    {
        QMessageBox::information(this,"成功","恭喜你,向数据表插入数据成功!",QMessageBox::Ok);
        QueryTableFunc();
        CleanEdit();
    }
}

void MainWindow::on_btn_delete_clicked()  //删除
{
    QSqlQuery query;
    int id=ui->lineEdit_ID->text().toInt();
    QString str= QString("DELETE FROM student WHERE id = %1").arg(id);
    if(QMessageBox::question(this,"DELETE","ARE YOU SURE?",QMessageBox::Yes|QMessageBox::No)
                ==QMessageBox::No)
    {
        return;
    }
        if(query.exec(str)==false)
        {
            qDebug()<<str;
        }
        else
        {
            CleanEdit();
            qDebug()<<"Delete success";
            QueryTableFunc();
        }
}

void MainWindow::on_btn_renew_clicked()   //更新
{    
    QSqlQuery query;
    int id=ui->lineEdit_ID->text().toInt();
    double score=ui->lineEdit_achieve->text().toDouble();
    QString str=QString("UPDATE student SET score=%1 WHERE id=%2").arg(score).arg(id);
    if(query.exec(str)==false){
        qDebug()<<str;
    }else{
        CleanEdit();
        qDebug()<<"Update success";
        QueryTableFunc();
    }
}

void MainWindow::on_btn_query_clicked()  //查询
{
    QueryTableFunc();
}

void MainWindow::CleanEdit()   //清空输入框
{
    ui->lineEdit_ID->clear();
    ui->lineEdit_name->clear();
    ui->lineEdit_achieve->clear();
}

第六步:编译生成可执行文件

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值