QT+MYSQL数据库处理

发布于:2024-05-13 ⋅ 阅读:(152) ⋅ 点赞:(0)

1、打印Qt支持的数据库驱动,看是否有MYSQL数据库驱动

    qDebug() << QSqlDatabase::drivers();

有打印结果可知,没有MYSQL数据库的驱动

2、下载MYSQL数据库驱动,查看下面的文章配置,亲测,可以成功

Qt6 配置MySQL数据库的驱动_qt6 mysql-CSDN博客

3、连接数据库,如果打印open success说明MYSQL环境安装成功。

    QSqlDatabase db =QSqlDatabase::addDatabase ( "QMYSQL") ;//连接数据库
    db.setHostName("127.0.0.1"); //数据库服务器IP
    db.setUserName("root") ; //数据库用户名
    db.setPassword("1234");//密码
    db.setDatabaseName("qtDb") ; //使用哪个数据库
    //打开数据库
    if( !db.open())//数据库打开失败
    {
         qDebug()<<"open err ";
        return;
    }
    qDebug()<<"open success ";

 4、我创建的表名是 test,然后有两个字段,使用的一些sql语句如下

show databases;

create database qtDb;
use qtDb;

create table test(
name character(20),
age int);

select * from test;

insert into test values("lh",18);

update test set age=20 where name="lh" limit 1;

5、创建QT的UI界面

6、给ui界面控件命名

7、插入,生成插入按钮的槽函数

void Widget::on_insertPushButton_clicked()
{
    QString namestr = ui->insertNameLineEdit->text();
    int num = ui->insertAgeLineEdit_2->text().toInt();
    QString str = QString("insert into test values('%1', '%2')").arg(namestr).arg(num);
    QSqlQuery query;
    query.exec(str);

    qDebug()<<"insert success ";
}

8、测试插入函数,测试成功

9、查询代码, 将name作为关键词查询

void Widget::on_selectPushButton_2_clicked()
{
    QString searchName = ui->selectNameLineEdit_3->text();
    QString str = QString("select *from test where name = '%1'").arg(searchName);
    QSqlQuery query;
    query.exec(str);

    QString name;
    int age;
    while (query.next())
    {
        name = query.value(0).toString();
        age = query.value(1).toInt();
    }

     // QString str2 = "name:" + name +"\r\n" +"age:" + QString::number(age);
    QString str2 = QString("name:%1 \n age:%2").arg(name).arg(age);
    ui->selectTextEdit->setText(str2);
}

10、查询表格中所有数据

void Widget::on_selectAllPushButton_3_clicked()
{
    QString str = QString("select *from test");
    QSqlQuery query;
    query.exec(str);

    QString name;
    int age;
    QString text;
    while (query.next())
    {
        name = query.value(0).toString();
        age = query.value(1).toInt();

        text = text + "name:" + name +"   " +"age:" + QString::number(age) +"\r\n";
    }
    ui->selectAllTextEdit_2->setText(text);
}

11、完整工程代码

链接:https://pan.baidu.com/s/1ocgu1S8-FSFZFz4X8w7aRg?pwd=8888 
提取码:8888


网站公告

今日签到

点亮在社区的每一天
去签到