Qt中快速批量模拟增加数据

快速增加数据

在日常开发中,比如写一个学生管理系统,需要模拟增加数据,如果一条一条的调用sql语句进行添加稍稍大量的数据就会很慢,本人亲测,比调用单个增加函数快上很多,增加两三白条数据就是那么一两秒的事

下面给一个快速的操作

第一步:首先定义一个对应的结构体类,方便操作

例:
struct StuInfo{
    int id;
    QString name;
    quint8 age;
    quint16 grade;
    quint16 uiclass;
    quint32 studentid;
    QString phone;
    QString wechat;
};

第二步:声明并定义两个添加的函数

例:
//添加学生
//添加单个学生
bool stuSql::addStu(StuInfo info)
{
    QSqlQuery sql(m_db);
    QString strSql = QString("insert into student values(null,'%1',%2,%3,%4,%5,'%6','%7')").
            arg(info.name).
            arg(info.age).
            arg(info.grade).
            arg(info.uiclass).
            arg(info.studentid).
            arg(info.phone).
            arg(info.wechat);
    return sql.exec(strSql);
}
//添加多个学生
bool stuSql::addStu(QList<StuInfo> l)
{
    QSqlQuery sql(m_db);
    m_db.transaction();
    for(auto info:l){
        QString strSql = QString("insert into student values(null,'%1',%2,%3,%4,%5,'%6','%7')").
                arg(info.name).
                arg(info.age).
                arg(info.grade).
                arg(info.uiclass).
                arg(info.studentid).
                arg(info.phone).
                arg(info.wechat);
        sql.exec(strSql);
    }
    m_db.commit();
    return true;
}

第三步:调用相应的函数

//模拟学生数据
void MainWindow::on_btn_simulation_clicked()
{
    QRandomGenerator g,c;
    g.seed(0);
    c.seed(0);
    QList<StuInfo>l;
    for(int i=0;i<m_lNames.size();i++){
        auto grade = g.bounded(7,10);//随机生成年级 左闭右开 随机生成 7 8 9这三个数
        auto uiclass = g.bounded(1,9);//随机生成班级
        StuInfo info;
        info.name=m_lNames[i];
        if(i%3)
            info.age=17;
        if(i%7)
            info.age=18;
        if(i%2)
            info.age=20;
        info.grade=grade;
        info.uiclass=uiclass;
        info.studentid=i;
        info.phone="123321";
        info.wechat="123321";
        //将模拟的数据放入容器,增加效率
        l.append(info);
    }
     m_ptrStuSql->addStu(l);//调用增加函数
     updateTable();//界面刷新
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值