前置要求:配置好Mysql Driver 否则可能出现 QMYSQL driver not loaded

1.数据库的连接
需要的头文件

#include <QSqlDatabase>
#include <QSqlDriver>

代码

    db = QSqlDatabase::addDatabase("QMYSQL"); //选择Driver
    db.setHostName(hostName);                 //设置数据库地址(字符串)
    db.setPort(port);						  //设置数据库端口(整型)
    db.setUserName(userName);				  //设置用户名(字符串)
    db.setPassword(userPassword);             //设置密码(字符串)
    db.setDatabaseName("test");           //选择数据库名字(字符串)

可以用

    if (!db.open())
    {
        QMessageBox::warning(this, "警告", "数据库连接失败");
    }else
    {
        QMessageBox::about(this,"连接成功","数据库连接成功");
    }

简单判断是否连接成功

2.数据库指令的执行
需要的头文件

#include <QSqlQuery>
#include <QSqlError>

代码

QSqlQuery query;
str = QString("SELECT * FROM smatch WHERE tno LIKE '%1%'").arg(ui->lineEdit_5->text());//ui->lineEdit_5->text()为输入的变量 替换了%1的位置
query.exec(str);

可以用

        query.first();
        
        if (query.value(0).toString().size() == 0)
        {
            QMessageBox::warning(this, "警告", "结果为空");
            return;
        }
        if (query.lastError().text().size() != 0)
        {

            ui->textEdit->setText(query.lastError().text()); //ui->textEdit为输出文本框
            return;
        }
        else
        do
        {
            QString res = QString("比赛编号:%1   运动项目:%2  运动员姓名:%3   代表队:%4   时间:%5   地点:%6   ").arg(query.value(0).toString()).arg(query.value(1).toString())
                                                                                                          .arg(query.value(2).toString()).arg(query.value(3).toString())
                                                                                                          .arg(query.value(4).toString()).arg(query.value(5).toString());
            ui->textEdit->append(res);
        }while (query.next());
    }

进行结果或者报错的输出

Q.E.D.