当前位置: 首页 > news >正文

解决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数据库的所有表。
    在这里插入图片描述

结束

相关文章:

  • 信息安全之对称加密技术
  • 信息安全之非对称加密技术
  • 信息安全之数字信封原理
  • 信息安全之信息摘要技术
  • 信息安全技术之数字签名
  • 设置Mysql C API断线自动重连
  • mysql_query()和myql_real_query()的区别
  • mysql_store_result和mysql_use_result的区别
  • linux下实时跟踪文件变化tail指令
  • 解决windeployqt打包QML程序无法启动的问题
  • windows下如何找到占用文件或文件夹的程序
  • 正则表达式的零宽断言
  • 如何在Qt中使用zlib
  • 如何在程序中解析获取word文档(docx格式)的文本内容
  • QFormLayout布局该什么时候使用
  • 11111111
  • DataBase in Android
  • docker容器内的网络抓包
  • Druid 在有赞的实践
  • Elasticsearch 参考指南(升级前重新索引)
  • JavaScript HTML DOM
  • JAVA之继承和多态
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Laravel核心解读--Facades
  • Rancher-k8s加速安装文档
  • React-Native - 收藏集 - 掘金
  • vue中实现单选
  • 服务器从安装到部署全过程(二)
  • 关于使用markdown的方法(引自CSDN教程)
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 计算机常识 - 收藏集 - 掘金
  • 跨域
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 排序算法学习笔记
  • 什么是Javascript函数节流?
  • 数据结构java版之冒泡排序及优化
  • ionic入门之数据绑定显示-1
  • ​虚拟化系列介绍(十)
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (39)STM32——FLASH闪存
  • (C#)获取字符编码的类
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (接口封装)
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (七)Knockout 创建自定义绑定
  • (五)网络优化与超参数选择--九五小庞
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)大型网站的系统架构
  • .equals()到底是什么意思?
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .net core开源商城系统源码,支持可视化布局小程序