Qt mingw73_32 + MySql8.0 使用和对数据库操作 - 初窥篇1

发布时间 2023-07-24 16:41:05作者: 掌控命运

1、开发环境

  QtCreator4.8.2 + Qt5.12.2 + MySql8.0.33

2、设计背景

  现在已经有 MySql8.0.33 是 64 位的数据库,仅支持 64 位的程序,但是当前 Qt 程序编译环境是 mingw73_32

  32 位程序连接 64 位的数据库实例

3、操作流程

  1)测试驱动代码 + 测试结果

int main(int argc, char *argv[])
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");    // 可以是本机 localhost 也可以是外网网址
    db.setDatabaseName("mysql");    // 数据库名
    db.setUserName("root");         // 用户名
    db.setPassword("123");          // 用户密码
    
    /* 连接数据库 */
    if (!db.open())
    {
        qDebug() << "Failed to connect to the database:";
        qDebug() << db.lastError().text();
        return -1;
    }
    
    /* 遍历数据库的一个数据表 */
    QSqlQuery query;
    if (query.exec("SELECT * FROM  user"))
    {
        while (query.next()) 
        {
            QString column1 = query.value(0).toString();
            QString column2 = query.value(1).toString();
            // ...
            qDebug() << column1 << column2;
        }
    }
    else
    {
        qDebug() << "Failed to execute SELECT query:";
        qDebug() << query.lastError().text();
    }
    
    /* 断开数据库 */
    db.close();
    return 0;
}

  

  2)遇到问题:"SSL connection error: unknown error number QMYSQL: Unable to connect"

     编译库不支持SSL,需要关闭数据库的 SSL功能 

     解决方法:在数据库的 my.ini 配置文件中的 [mysqld] 后面添加 skip_ssl,即跳过 ssl 功能

     注意:如果更改后出现终端无法登录的问题,重置密码,操作如下(参考链接:https://www.cnblogs.com/zhurong/p/9898675.html

      (1)修改 my.ini 文件先登录进去。

      (2)ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;   #修改加密规则 

      (3)ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';   #更新一下用户的密码 

      (4)FLUSH PRIVILEGES;   #刷新权限 

      (5)alter user 'root'@'localhost' identified by 'password';