Qt sql数据库多重条件查询

对sql数据库实现多重条件查询,做了一个简单的demo

void ASqlQuery::SlotQuery()
{
    QString sqlCmd;
    bool flag = false;
    if(ui->Edit_num->text() != "")//序号
    {
        sqlCmd = QString::fromUtf8("select * from WeldQuality where uQualityNo = %1").arg(ui->Edit_num->text().toInt());   // uQualityNo 是int 

        }

        flag = true;
    }

    if(ui->Edit_ProgramNum->text() != "")//规范号
    {
        if(flag == false)
        {
            sqlCmd = QString::fromUtf8("select * from WeldQuality where uProgramNum = %1").arg(ui->Edit_ProgramNum->text().toInt());  // uProgramNum 是int 

        }
        else
        {
            sqlCmd = QString::fromUtf8("select * from (%1)  where uProgramNum = %2").arg(sqlCmd).arg(ui->Edit_ProgramNum->text().toInt()); 
        }
        flag = true;
    }

    if(ui->Edit_CustomizeField->text() != "")//自定义字段
    {
        if(flag == false)
        {
            sqlCmd = QString::fromUtf8("select * from WeldQuality where sField_Customize1 = '%1'").arg(ui->Edit_CustomizeField->text()); // sField_Customize1 是varchar ,需要使用引号'%1', int型的数字不需要

        }
        else
        {
            sqlCmd = QString::fromUtf8("select * from (%1)  where sField_Customize1 = '%2'").arg(sqlCmd).arg(ui->Edit_CustomizeField->text());
        }
        flag = true;
    }

    if(QueryTimeEnableFlag == true)//时间
    {
        //时间
        QString sDateEditStart = ui->dateEdit_start->text();
        QString sDateEditEnd = ui->dateEdit_end->text();
        QString sTimeEditStart = ui->timeEdit_start->text();
        QString sTimeEditEnd = ui->timeEdit_end->text();
        if(flag == false)
        {
            sqlCmd = QString::fromUtf8("select * from WeldQuality where sQualityDate >= '%1' and sQualityTime >= '%2'").arg(sDateEditStart).arg(sTimeEditStart);
            sqlCmd = QString::fromUtf8("select * from (%1) where sQualityDate <= '%2' and sQualityTime <= '%3'").arg(sqlCmd).arg(sDateEditEnd).arg(sTimeEditEnd);
        }
        else
        {
            sqlCmd = QString::fromUtf8("select * from (%1)  where sQualityDate >= '%2' and sQualityTime >= '%3'").arg(sqlCmd).arg(sDateEditStart).arg(sTimeEditStart);
            sqlCmd = QString::fromUtf8("select * from (%1) where sQualityDate <= '%2' and sQualityTime <= '%3'").arg(sqlCmd).arg(sDateEditEnd).arg(sTimeEditEnd);
        }
    }

    //sqlCmd = QString::fromUtf8("select * from WeldQuality where sQualityDate = '2021-01-27'");//ok
    //sqlCmd = QString::fromUtf8("select * from WeldQuality where sQualityDate > '2021-01-27'");//ok
    //sqlCmd = QString::fromUtf8("select * from WeldQuality where sQualityDate = '2021-01-27' and ( sQualityTime > '09:40:54' and sQualityTime < '18:00:54')");//ok
    model->setQuery(sqlCmd); //QSqlQueryModel->setQuery(sqlCmd)

}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值