QT5连接使用mysql

1.使用背景

    换公司后,当前公司的项目是一个QT方面的项目。QT还是大学期间自学过一段时间,现在好久没用,很多东西都忘记了。想做点小东西试试手,顺便熟悉一下。

2.安装软件

1)安装mysql,我这里使用的是mysql5.5,可以官方或百度搜索下载。

安装过程参考CSDN :mysql5.5安装教程

2)安装QT5,我这里安装的是windows下5.6.3,下载安装。

下载参考:qt下载参考文章

下载完成后,按照安装包的提示,依次完成安装即可。

3.连接数据库

QApplication a(argc, argv);
    MainWindow w;
    
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");  //主机名
    db.setPort(3306);
    db.setDatabaseName("qqlike");  //数据库名
    db.setUserName("root");       //用户名
    db.setPassword("1234");      //密码
    
    bool ok = db.open();
    if(!ok)
    {
        qDebug("数据库连接失败");
        qDebug()<

4.遇到问题

1): error: undefined reference to `_imp___ZN12QSqlDatabase17defaultConnectio

解决方法:.pro文件中添加 :

QT       += sql

2)QSqlDatabase: QMYSQL driver not loaded

错误原因有下面两种情况:

a.缺少libmysql.dll 文件

解决方法:将MySQL\MySQL Server 5.5\lib\libmysql.dll文件复制到QT\5.6.3\mingw49_32\bin下。

b.Qt Creator与MySQL位数不统一(mysql64位,QT32位,或是相反情况)

解决方法:

  1. 重新安装对应mysql版本的QT(较浪费时间,重装过,且出现过其他问题)
  2. 重新安装对应qt版本的mysql    (相比较1,还不如选择1.mysql卸载安装更麻烦)
  3. https://dev.mysql.com/downloads/connector/c/ 下载mysql-connector-c(对应QT版本位数),在其lib目录中找到文件“libmysql.dll”。然后将“libmysql.dll”复制到QT下。(此方法最简单,方便)

3)顺便说一下为了解决QSqlDatabase: QMYSQL driver not loaded,选择1时,遇到的问题

     为了解决版本不同的问题,开始我选择了重装QT,在官网下载时,一开始下载了qt-opensource-windows-x86-msvc2015_64-5.6.2.exe,因为一开始装的是5.6.2。安装完成后,编译时一直出现

LNK4099: 未找到 PDB“vc120.pdb,error LNK2019: 无法解析的外部符号等一些链接错误。删除debug,release等目录,再重新编译也会出现这样的问题。

原因是:msvc是VS上用的,类似VS的插件。直接用QTcreator时,需要下载mingw。

两种不同,也是之后查找之后才知道的,开始一直不知道,瞎弄了很久。

4)上面的错误修改完毕之后,再运行时,一直出现数据库连接失败,但是没有LOG。

解决方法:

qDebug()<

追加输出log后,出现了下面的信息:

QSqlError("1045","QMySQL:Unable to connect","QAccess denied for user'root'@'localhost'(using password:YES)")

密码错误,使用Navicat修改了数据库账号密码后,再实行就OK了。

5.往后预期

   之后的数据库操作,再调用相应的方法就可以。具体的话,想把数据库交互这边封装成一个类。在git上下载了一个模范QQ的UI界面,想陆续开始实行里面的一些基础功能。之后再一步步完善吧。

你可能感兴趣的:(C/C++,QT)