QT 作业 day5 7/30

1.数据库

.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlRecord>
#include <QSqlError>
#include <QMessageBox>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_intbn_clicked(); //添加记录

    void on_showbtn_clicked();//展示记录

    void on_selectbtn_clicked();//查找记录

private:
    Ui::Widget *ui;

    QSqlDatabase db;//管理数据库
};
#endif // WIDGET_H

.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //添加数据库
    if(!db.contains("stuinfo.db"))
    {
        db=QSqlDatabase::addDatabase("QSQLITE"); //sqlite数据库

        db.setDatabaseName("stuinfo.db"); //数据库名

    }

    //打开数据库
    if(!db.open())
    {
        QMessageBox::information(this,"","数据库打开失败!");
        return;
    }

    QSqlQuery querry;

    //    QString sql="create table if not exists stu_info_table ("
    //                 "id integer primary key autoincrement,"
    //                 "numb integer,"
    //                 "name varchar(20),"
    //                 "sex varchar(4),"
    //                 "score integer)";

    QString sql = "create table if not exists stu_info_table("   //创建表的语句
            "id integer primary key autoincrement,"       //主键,自动增加
            "numb integer,"                       //学号
            "name varchar(20),"                   //姓名
            "sex varchar(4),"                     //性别
            "score integer)";

    if(querry.exec(sql))
    {
        QMessageBox::information(this,"","数据表创建成功");
    }
    else
    {
        QMessageBox::information(this,"","数据表创建失败");
        return;

    }


}

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

//插入数据
void Widget::on_intbn_clicked()
{
    //从ui获取数据
    int numb=ui->idld->text().toInt();
    QString name=ui->nameld->text();

    QString sex=ui->sexld->text();
    int score=ui->scoreld->text().toInt();

    //判断数据完整性
    if(numb==0||name.isEmpty()||sex.isEmpty()||score==0)
    {
        QMessageBox::information(this,"","请将数据填写完整");
        return;
    }

    //插入表
    QSqlQuery querry;
    QString sql=QString("insert into stu_info_table(numb,name,sex,score)"
                        "values(%1,'%2','%3',%4)")
            .arg(numb).arg(name).arg(sex).arg(score);

    //执行sql语句
    if(querry.exec(sql))
    {
        QMessageBox::information(this,"","数据表创建成功");
    }else
    {
        QMessageBox::information(this,"","数据表创建失败");
        return;
    }


}

//查询数据并展示
void Widget::on_showbtn_clicked()
{
    QString sql="select * from stu_Info_table";

    QSqlQuery querry;

    if(!querry.exec(sql))
    {
        QMessageBox::information(this,"","查询失败!");
        return;
    }

    //展示到ui界面
    int i=0;
    while(querry.next())
    {
        for(int j=0;j<querry.record().count()-1;j++)
        {
            ui->stuWidget->setItem(i,j,new QTableWidgetItem(querry.value(j+1).toString()));
        }
        i++;


    }
}

//按信息查找

void Widget::on_selectbtn_clicked()
{
    //获取信息
    int numb=ui->idld->text().toInt();
    QString name=ui->nameld->text();

    QString sex=ui->sexld->text();
    int score=ui->scoreld->text().toInt();

    //判断数据完整性
    if(numb==0&&name.isEmpty()&&sex.isEmpty()&&score==0)
    {
        QMessageBox::information(this,"","请将数据填写完整");
        return;
    }

    //清空
    QString sql="select * from stu_Info_table";
    QSqlQuery querry;
    querry.exec(sql);
    int i=0;
    while(querry.next())
    {
        for(int j=0;j<querry.record().count()-1;j++)
        {
            ui->stuWidget->setItem(i,j,new QTableWidgetItem(""));
        }
        i++;

    }

    //按学号查找
    sql=QString("select * from stu_Info_table where numb = %1 ").arg(numb);

    if(!querry.exec(sql))
    {
        QMessageBox::information(this,"","查询失败!");
        return;
    }


    i=0;
    while(querry.next())
    {
        for(int j=0;j<querry.record().count()-1;j++)
        {
            ui->stuWidget->setItem(i,j,new QTableWidgetItem(querry.value(j+1).toString()));
        }
        i++;

    }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值