解决QMYSQL driver not loaded问题

前言

操作环境windows server2012+vs2010+qt4.8.7
使用QtSqlDatabase时出现如下的提示,代表当前使用的QSqlDatabase没有mysql的驱动。解决办法有两种,一种是网上下载别人编译好的库文件,放到指定的目录下,可以点击此处下载我编译好的插件库(下载后按照下述的步骤三进行部署);另一种是自己编译mysql的插件,下面我就来讲一下怎么编译和部署插件。
在这里插入图片描述

如何编译mysql插件
一、编译准备

需要如下两部分文件:

  1. qt源代码(安装qt的时候选择了安装源代码选项那么在qt的安装路径下就会有)
  2. mysql的库文件及头文件(同样也是安装mysql时选装的),如果未安装可以[点击此处下载]。(https://downloads.mysql.com/archives/c-c/)
二、编译
  1. 进入到qt源码的mysql插件目录(我的目录在D:\Qt\4.8.7\src\plugins\sqldrivers\mysql)
  2. 修改目录下mysql.pro文件增加mysql依赖库以及头文件路径,修改后的文件如下
TARGET = qsqlmysql

#下面这两个需要设置成前面编译准备中的mysql库文件和头文件的路径
INCLUDEPATH += D:/mysqldev/include
LIBS += D:/mysqldev/lib/libmysql.lib

SOURCES = main.cpp
include(../../../sql/drivers/mysql/qsql_mysql.pri)

include(../qsqldriverbase.pri)
  1. 执行qmake和nmake(如果不是使用msvc那么用make指令替代)
三、部署
  1. 插件部署
    编译完成后产生的文件如下,qsqlmysql4.dll和qsqlmysql4.lib,此处我编译的是release版本。
    在这里插入图片描述
    将上述的两个文件,拷贝到qt的插件目录(D:\Qt\4.8.7\plugins\sqldrivers,根据自己的安装位置修改目录的前缀)下
    在这里插入图片描述
  2. mysql库部署
    将第二步编译步骤中使用到的libmysql.dll库拷贝到qt的bin目录(D:\Qt\4.8.7\bin)下
    在这里插入图片描述
四、测试
  1. 示例
#include <QtSql>
#include <qdebug.h>
#include <QtCore/QCoreApplication>

int main(int argc, char *argv[])
{
	QCoreApplication a(argc, argv);
	QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
	db.setUserName("root");    		//替换为测试数据库的用户名
	db.setPassword("123");			//替换为测试数据库的密码
	db.setHostName("127.0.0.1");	//替换为测试数据库的IP地址
	db.setPort(3306);				//替换为测试数据库的端口
	db.setDatabaseName("mysql");	//要访问的数据库为mysql
	qDebug()<<db.open();			//打印数据库连接信息
	qDebug()<<db.databaseName();	//打印当前使用的数据库名称
	qDebug()<<db.tables();			//打印当前使用的数据库下所有的表
	return a.exec();
}
  1. 运行结果
    成功连接到了mysql,打印出mysql数据库的所有表。
    在这里插入图片描述

结束

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值