对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)
}