QT连接MySQL

Qt 连接MySQL 是件很简单的事,但也有可能很不简单。

QT给我们的提示只有 QMYSQL driver not loaded,让我们毫无头绪。访问其他数据库也可以用同样的方法解决。

Qt 访问 MySQL 需要 2 个动态链接库文件,一个是 Qt 自己的 MySQL 驱动插件,另一个是 MySQL 提供的动态链接库,缺一不可。在程序里指定要访问的数据库为 MySQL,Qt 会自动的加载 MySQL 驱动插件,其实现依赖于MySQL 的动态链接库访问 MySQL。

#include <iostream>
#include <QSqlDatabase>

#include <QDebug>
using namespace std;
int main()
{
    QSqlDatabase d = QSqlDatabase::addDatabase("QMYSQL");
    d.setHostName("127.0.0.1");
    d.setDatabaseName("dbName");
    d.setPort(3306);
    d.setUserName("root");
    d.setPassword("root");
    if(d.open())
        cout<<"Hi mysql!连接"<<endl;
    else
        cout<<"失败"<<endl;
    qDebug()<<QSqlDatabase::drivers()<<endl;
    return 0;
}

运行上面的代码,QT只给我们驱动没有加载的提示。Qt 5 的 SDK 默认提供了编译好的 MySQL 驱动插件,位于 plugins/sqldrivers(Mac OS 下为 libqsqlmysql.dylib,Windows 下为 qsqlmysql.dll),这个可以直接使用。但如果用的是 Qt 4,很不幸, 需要我们自己编译 MySQL 的驱动插件,而且不同的系统,不同的编译器中步骤有所区别,需要相当大的篇幅才能讲清楚。接下来还需要MYSQL的动态链接库:

 1 #include <QSqlDatabase>
 2 #include <QSqlQuery>
 3 #include <QSqlError>
 4 #include <QPluginLoader>
 5 #include <QDebug>
 6
 7 void loadMySqlDriver();
 8
 9 int main(int argc, char *argv[]) {
10
11     loadMySqlDriver();
12     return 0;
13 }
14
15 void loadMySqlDriver() {
16     QPluginLoader loader;
17     // MySQL 驱动插件的路径
18     loader.setFileName("/Users/Stdu/Qt5.6.1/5.6/clang_64/plugins/sqldrivers/libqsqlmysql.dylib");
19     qDebug() << loader.load();
20     qDebug() << loader.errorString();
21 }

执行上面的代码,终于能看到问题出在哪里,需要opt/..../libmysqlclient.18.dylib这个动态链接库。

我的MYSQL是5.7,其中包含的动态链接库是libmysqlclient.20.dylib,但我想了想这个库就是连接MYSQL的关键所在,将其改名为libmysqlclient.18.dylib,放在opt/.../下。连接成功。

参考:http://qtdebug.com/DB-AccessMySQL.html

时间: 2024-08-25 11:35:26

QT连接MySQL的相关文章

毕业设计之qt连接MySQL

//连接MySQL数据库的函数 bool LoginView::createConnection() {     QSqlDatabase t_db = QSqlDatabase::addDatabase("QMYSQL");     t_db.setHostName("localhost");     t_db.setDatabaseName("chatsystem");     t_db.setUserName("root"

qt连接mysql报错:QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7

之前使用Qt连接mysql数据库,遇到过这样的报错,后来解决了,但没有记录下来,这次又遇到了,花了好多的精力,这次吸取上次的教训,做一下记录和总结. 报错截图: 编辑背景: Qt5.13.0,编译器是mingw73_64,是64位的. mysql-5.7.27-winx64,也是64位的. 有人说,qt的编译器的位数要和数据库的位数是一致的,我没试过不同位数行不行,反正我的都是64位的. 问题: 使用<QSqlDatabase>库进行mysql的连接操作,出现下面的报错信息,当然别忘了在.pr

Ubuntu12.04下Qt连接MySQL数据库

本文介绍在Ubuntu12.04 (64 bit) 下使用Qt 4.8.2连接MySQL(Ver 14.14 Distrib 5.5.43)数据库. 1.安装 Qt 和 MySQL 若未安装以上软件,可参考我的博客安装. 安装Qt:Ubuntu12.04下安装Qt4总结 --> http://www.cnblogs.com/gaohongchen01/p/4204860.html 安装MySQL:Ubuntu12.04下安装Apache+PHP+MySQL --> http://www.cnb

QT连接MYSQL数据库教程

最近购买了阿里云Linux服务器,处于自学需要安装了MYSQL5.7. 准备用QT开发个小工具,在使用QT提供的标准类连接MYSQL库的时候一直爆出无法加载MYSQL驱动的问题. 软件环境是windows10 +Qt4.8.7+mingw+qtcreator,在Qt4这个版本中不包含MYSQL数据的驱动,需要手动编译.网上的其他教程一般是针对MYSQL5.5这个版本,编译的时候需要用到/lib/opt路径下的lib文件(习惯Linux系统路径格式了,windows格式请脑补),经过多次尝试已然无

qt 连接mysql

默认情况下,qt 并没有自带mysql的数据库插件,需要自己编译 先安装mysql server ,运行setup.exe时选择自定义安装,安装目录设为"D:\mysqldev"不要留有空格,否则接下来qmake生成makeifle会出错 打开cmd ,运行以下代码 cd %QTDIR%\src\plugins\sqldrivers\mysql qmake "INCLUDEPATH+=D:\mysqldev\include" "LIBS+=D:\mysql

Windows下Qt连接MySql数据库

1.设置环境变量,需添加如下的环境变量: 2.打开Qt Command Prompt,输入第一条命令:cd %QTDIR%\src\plugins\sqldrivers\mysql 后按回车,然后输入第二条命令: qmake "INCLUDEPATH+=C:\MySQL\include","LIBS+=C:\MySQL\lib\opt\libmysql.lib" mysql.pro 最后输入:mingw32-make 进行编译. 或者如下图所示,在.pro文件中添加

Qt5.5连接MySQL

(一)环境 windows下Qt5.5,安装的是MySQL Server 5.5版本. (二)qt连接mysql的原理 qt连接mysql需要两个dll,一个是qt连接mysql的驱动(注意:qt5.5自带这个驱动dll,位于Qt5.5.0\5.5\msvc2013\plugins\sqldrivers下qsqlmysql.dll和qsqlmysqld.dll,如果是qt4则需要下载qt该驱动的源代码自己编译),另一个是mysql自带的libmysql.dll(位于MySQL\MySQL Ser

QT学习之路-QT服务器-mysql数据库相关问题集锦(1)

时间:2017-04-07 异常信息: Error - RtlWerpReportException failed with status code :-1073741823. Will try to launch the process directly E:\VictorPrivate\CommPlat\Bin\A2CMangerServer.exe exited with code -1073741819 场景: qt连接mysql的过程中,操作数据库经常出现mysql server ha

Qt编译mysql驱动

Qt连接MySQL 分类: Qt 数据库 2013-02-27 20:57 1452人阅读 评论(0) 收藏 举报 一般情况下,qt只带了qsqlite4和qodbc两种驱动,如果在安装qt时,你没有添加qt -mysq参数,那么意味着,在你的程序中不能直接使用mysql数据库. 那么你就需要安装这个插件. 感谢jpzjpz提供的详细安装过程! 网址为:http://dev.wo.com.cn/bbs/viewthread.jsp?tid=140945&extra=page%3D1 我这里还是在