自学内容网 自学内容网

Qt(10.11)

数据表

源代码:

#include "widget.h"
#include "ui_widget.h"
#include<QMessageBox>//消息对话框
#include<QDebug>
#include<QSqlRecord>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //想要添加某个数据库
    if(!db.contains("stu.db"))
    {
        //如果当前对象中没有包含所需的数据库,则添加一个数据库
        db=QSqlDatabase::addDatabase("QSQLITE") ;//添加sqlite3数据库
        db.setDatabaseName("stu.db");//设置数据库的名称
    }
//打开数据库
    if(!db.open())
    {
        QMessageBox::information(this,"提示","数据库打开失败");
        return ;
    }
    //准备创建数据表
    //实例化一个sql语句的执行者
    QSqlQuery queery;
    //准备sql语句
    QString sql = "create table if not exists STU(id int,name char,sex char,score double);";
    //执行sql语句
    if(!queery.exec(sql))
    {
        QMessageBox::information(this,"提示","数据表创建失败");
        return ;
    }
    //程序执行至此,表示数据表创建成功


}

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

void Widget::on_pushbtn_clicked()//添加信息按钮对应的槽函数
{
    //将ui界面上的相关信息获取下来
    int ui_numb =ui->numberEdit->text().toUInt();
    QString ui_name =ui->nameEdit->text();
    QString ui_sex = ui->nanEdit->text();
    double ui_score =ui->scoreEdit->text().toUInt();
    //判断信息中心是否为空
    if(ui_numb==0||ui_name.isEmpty()||ui_sex.isEmpty()||ui_score==0)
    {
        QMessageBox::information(this,"提示","请将信息填写完整");
        return ;
    }
    //准备sql语句
    QString sql =QString("insert into STU(id,name,sex,score) values(%1,'%2','%3',%4);")
            .arg(ui_numb).arg(ui_name).arg(ui_sex).arg(ui_score);
    //qDebug()<<sql;
    //实例化sql语句执行者
    QSqlQuery queery;
    //执行sql语句
    if(!queery.exec(sql))
    {
        QMessageBox::information(this,"提示","添加信息失败");
        return ;
    }
    else
    {
        QMessageBox::information(this,"提示","添加信息成功");
    }

}

void Widget::on_showbtn_clicked()
{
    QSqlQuery queery;
    QString sql="select *from STU;";
    if(!queery.exec(sql))
    {
        QMessageBox::information(this,"提示","查询失败");
        return ;

    }
    //功能:读取查询结果集的下一条记录,如果记录不为空,就返回真,否则返回假
    int i=0;//遍历结果集的行
    while(queery.next())
    {
        //记录当前记录
        QSqlRecord record =queery.record();
        //对当前记录进行操作
        for(int j=0;j<record.count();j++)
        {
            //qDebug()<<record.value(i).toString();
            //该循环中的value(i)表示的就是第i行第j列的元素
            ui->tableWidget->setItem(i,j,new QTableWidgetItem(record.value(j).toString()));
        }
        i++;//表示行数增加
    }
}

void Widget::on_delbtn_clicked()
{
     QString name = ui->nameEdit->text();//获取要删除的名字
     QSqlQuery queery;
     //判断名字不为空
     if (name.isEmpty())
     {
             QMessageBox::information(this, "提示", "请输入要删除的姓名");
             return;
         }
     QString sql = QString("DELETE FROM STU WHERE name = '%1';").arg(name);//删除语句,同上
     if(!queery.exec(sql))
     {
         QMessageBox::information(this,"提示","数据删除失败");
         return ;
     }
     else
     {
         QMessageBox::information(this,"提示","数据删除成功");
     }
}

void Widget::on_sortbtn_clicked()
{

        // 实例化SQL执行者
        QSqlQuery queery;

        // 准备升序排序的SQL语句,根据成绩(score)进行排序
        QString sql = "SELECT * FROM STU ORDER BY score ASC;";

        // 执行查询操作
        if (!queery.exec(sql)) {
            QMessageBox::information(this, "提示", "排序查询失败");
            return;
        }

        // 清空表格数据
        ui->tableWidget->clear();

        // 遍历查询结果并显示到表格中
        int i = 0;
        while (queery.next()) {
            QSqlRecord record = queery.record();
            for (int j = 0; j < record.count(); j++) {
                ui->tableWidget->setItem(i, j, new QTableWidgetItem(record.value(j).toString()));
            }
            i++;
        }
    }

 排序:

删除:

 

 

 

 

 


原文地址:https://blog.csdn.net/saberyydsicloud/article/details/142861125

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!