Qt实现学生信息管理系统(三)

今天来讲解一下有关数据库的操作,数据库操作很简单,最重要的是sql语句.

一.学生表

1.学生表结构

Qt实现学生信息管理系统(三)_第1张图片

 2.学生表中的内容

这是我实现插入的一些内容

Qt实现学生信息管理系统(三)_第2张图片

 二.CreateDb类分析

1.该类中只有两个重要的函数

    void initDB();  //初始化数据库

    QList selectDataFromBase();  //查询所有信息

2.initDB();是用来对数据库进行初始化的

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setHostName("HostName.db");
    db.setDatabaseName("DatabaseName"); //设置数据库名
    bool ok = db.open();  //打开数据库
    if(ok)
    {
        qDebug()<<"Create DB";

        QSqlQuery query;
        query.exec("create table StuManager (create_date datetime, "
                   "id varchar(20)  primary key, name varchar(20) ,"
                   " sex varchar(20) ,age INTEGER ,"
                   "address varchar(20) , phone varchar(12) , description varchar(50))");  //执行创建表的sql语句
    }
    else
    {
        qDebug()<

3.selectDataFromBase()函数查询所有记录集

   QSqlQuery query("SELECT * FROM StuManager");

    QList stuInfo;

    while (query.next())  //遍历查询出来的记录
    {
        QStringList rowData ;  //把查询出来的记录先存储到rowData中,然后再放到QList中

        rowData <

三.执行添加删除修改操作

1.添加操作

代码如下:

void Widget::ExecAddSql(QVariantMap stuInfo)
{
    if(m_operateType==Add)   //如果是添加类型 就执行否则就不执行 ,因为之前点击添加按钮会给两个槽函数发信号 所以要这样写
    {
        QString create_date=stuInfo.value("datatime").toString();
        QString id=stuInfo.value("number").toString();
        QString name=stuInfo.value("name").toString();
        QString sex=stuInfo.value("sex").toString();
        QString age=stuInfo.value("age").toString();
        QString address=stuInfo.value("address").toString();
        QString phone=stuInfo.value("phone").toString();
        QString description=stuInfo.value("description").toString();
        qDebug()<appendRowData(rowData);//如果添加成功就把要已经添加的数据添加到表格中.
            QMessageBox::information(this ,"提示" , "添加成功!");
        }else
        {
            QMessageBox::information(this,"提示","添加失败");
        }

    }
}

2.修改操作

void Widget::ExecEditSql(QVariantMap stuInfo)
{
    if(m_operateType==Edit) //如果是修改类型 就执行否则就不执行 ,因为之前点击添加按钮会给两个槽函数发信号 所以要这样写
    {
        QString create_date = stuInfo.value("datetime").toString();
        QString id = stuInfo.value("number").toString();
        QString name = stuInfo.value("name").toString();
        QString sex = stuInfo.value("sex").toString();
        QString age = stuInfo.value("age").toString();
        QString address = stuInfo.value("address").toString();
        QString phone = stuInfo.value("phone").toString();
        QString description = stuInfo.value("description").toString();

        QString sql;
        sql = QString("UPDATE StuManager "
                      "set create_date = '%0' ,id = '%2' ,name = '%3',"
                      "sex = '%4',age = '%5',address = '%6', phone = '%7',description = '%8'"
                      " where id = '%9' ")
                .arg(create_date).arg(id).arg(name).arg(sex).arg(age).arg(address).arg(phone).arg(description).arg(id);//构造sql语句

        QSqlQuery query;
        bool ok = query.exec(sql);  //执行sql语句
        if(ok) //判断是否执行成功
        {
            onBtnRefresh(); //重新加载数据
            QMessageBox::information(this ,tr("提示") , tr("修改成功!"));
        }
        else
        {
            QMessageBox::information(this ,tr("提示") , tr("修改失败!"));
        }
    }
}

3.执行删除操作

void Widget::ExecDelSql(QString id)
{
    QString sql;
    sql=QString("delete from StuManager"
                " where id='%1'").arg(id);  //利用id构造sql语句

    QSqlQuery query;
    bool ok=query.exec(sql); //执行sql语句
    if(ok)
    {
        onBtnRefresh(); //重新加载数据
        QMessageBox::information(this,"提示","删除成功");
    }else
    {
        QMessageBox::information(this,"提示","删除失败");
    }
}

四.总结

我是一个新手,代码是参考网上其它程序写的.还有很多不足.只实现了学生管理,教师管理还没有实现.不过代码都差不多.

代码我会上传的.

资源下载:

https://download.csdn.net/download/m0_37821391/12186570

 

你可能感兴趣的:(Qt)