您的位置:

qt4编译mysql驱动的简单介绍

本文目录一览:

我的Qt4.8.5怎么没有数据库驱动

一、安装MySQL和Qt

mysql-5.5.13-win32下载地址:

mysql安装过程:

安装mysql我们只需要他的include和lib文件夹即可

二、编译mysql驱动

打开qt目录D:\Qt\4.8.5\plugins\sqldrivers,里面包含了qt支持的数据库驱动,包括sqlite和odbc两种,默认不支持mysql的,为了支持mysql我们可以进入D:\Qt\4.8.5\src\plugins\sqldrivers\mysql目录编译mysql.pro。编译步骤如下:

第一、通过“开始”菜单打开Qt 4.8.5 Command Prompt环境,其结果如下:

第二、修改mysql.pro文件,在第二行添加如下内容(路径不能有空格)

INCLUDEPATH += "D:\mysql\include"

LIBS+= "D:\mysql\lib\libmysql.lib"

进入到mysql.pro工程目录,再配置

cd D:\Qt\4.8.5\src\plugins\sqldrivers\mysql

qmake mysql.pro

如何解决Qt Mysql中无法加载驱动问题

本文讲解是如何解决Qt Mysql中无法加载驱动问题,MySQL是一个小型关系型数据库管理系统。对于已经融入到Qt中的MySQL,也是很推广!那么先看本文的介绍。

做毕业,这两天一个很大的问题困惑的我不行。毕设我是用qt + mysql来做的。结果在自己电脑上跑起来很正常,但是编译一个release版本,拿到另外一台电脑上就报错说:can't load driver 。试图去解决这个问题,今天总算搞定,这里总结一下。

首先需要说明的是:我用的是qt for vc2005,qt4.5.0 mysql server5.5

整个流程:

1:首先我编译了一个release版本,而后用dependency walker查看了下库的依赖情况。发现依赖于:QtSql4.dll,QtGui4.dll,QtCore4.dll,msvcr80.dll以及KERNEL32.DLL这几个库。其中最后一个是system的,我们不用去管,剩下的这几个显然都需要拷贝到exe同目录下。尤其是msvcr80.dll,我在我电脑上搜了一下:有多大10几个同名的该文件,所以拷贝哪个是很重要的,此时我们只需要在dependency walker查看这个dll的属性,然后去对应目录底下拷贝就行了。所以:第一步就是把这些依赖库拷贝到exe同目录下。(千万不要拷贝错误,尤其是不同的版本)。

2、做完1之后再次运行,提示:找不到驱动。 问了一下别人,告之需如下做:

(1)首先在exe同目录下建一个plugins\sqldrivers这样的二级目录,而后将前边编译生成的qt-mysql驱动:qsqlmysql4.dll放到里边。

(2)而后在main.cpp中加上如下两句:

QString strLibPath(QDir::toNativeSeparators(QApplication::applicationDirPath())+QDir::separator()+ "plugins"); qApp.addLibraryPath(strLibPath);

做完这两部之后:按理应该没问题了,但是run一下发现:还是提示驱动找不到。

3、再后来,上网查了一下各种说法,发现几种可能性:①你要发布的电脑上没有安装mysql ②mysql版本不对。 我就纳闷了:找不到驱动与装没装mysql有什么关系?毕竟:驱动是我自己编译的,又不是mysql提供的。 问了下别人,别人也这么认为。然后就卡在这里了。 我不死心,继续在网上寻找各种可能的答案并进行尝试。最后找了问题,原来:我们需要把mysql提供的:libmySQL.dll这个库拷贝到exe同目录下(该文件在我自己电脑上处于:C:\Program Files\MySQL\MySQL Server 5.5\bin文件夹下)。如此之后再来运行就不再报:找不到驱动这个错误啦!(此时报的是:连接不到某个指定的数据库,那是因为我还没有把数据库文件导入到目标机器上来)。

总结:在其他pc上发布的时候需要做如下工作:

1、使用depenency walker查看依赖库,全部拷贝到exe同文件夹下。

2、(1)在exe同目录下建一个plugins\sqldrivers这样的二级目录,而后将前边编译生成的qt-mysql驱动:qsqlmysql4.dll放到里边。

(2)而后在main.cpp中加上如下两句:

QString strLibPath(QDir::toNativeSeparators(QApplication::applicationDirPath())+QDir::separator()+ "plugins"); qApp.addLibraryPath(strLibPath);

3、将mysql/bin目录下的libmySQL.dll拷贝到exe同目录下。

做完以上几步之后就OK了。

至于最后所报的连接不到指定的数据库,原因是这样的:

在开发的电脑上:你建了一个mysql数据库,那么我们需要把这个数据库文件也拷贝到目标机器上,并在目标机器上装mysql,而后将这个数据库文件导入进去。 导入之后你会发现:各字段的数据有可能出现乱码,这是由于各个字段的编码格式在开发机器和目标机器上不一致 导致的! 你需要按照开发机器上的数据库文件配置来重新设置一下目标机器的各个字段编码格式。

而在目标机器上导入数据库文件的方法是:(以建立的数据路名为buaa.sql为例)

1、在目标机器上装mysql

2、命令行运行mysql,进入后执行命令:create database buaa;

3、导入buaa.sql到刚创建的buaa数据库中。(我用的mysql-front这个数据库图形化工具)。

测试: Qt4.5.0commercial + vc2005 express + mysql5.5 +mysql-front +windows xp

(网上很多人说:找不到驱动是因为目标机器上没有安装vc运行时库的原因,但是我这里没有遇到这个问题:我测试的电脑没有任何vc环境,没有任何qt环境,也没有安装windows sdk。 但是如果大家按照我上边的方法测试发现有问题时:可以考虑在目标机器上安装vc运行时库试一下。它分sp1版本和 非sp1版本,你对应主机的vc版本选择一个安装就是。)

小结:关于如何解决Qt Mysql中无法加载驱动问题,介绍完了,好像出现此问题的友们还是有很多滴,希望本文对你有所帮助。

qt4:windows编译mysql5驱动程序最后mingw32-make 出现以下错误,怎么解决

我在编译oracle驱动时也遇到了这个错误,因为我安装的是QT-VS,所以后来在VS中打开.pro文件,配置了一下附加包含目录和附加依赖项目就可以了;(分别为:Oracle\..\OCI\include Oracle\..\OCI\lib\MSVC\oci.lib )。

希望对遇到同样问题的人有所帮助。

Linux系统 qt4.6.0中的mysql驱动怎么安装

Mysql:Mysql-5.0.22.tar.gz 1建立MySQL使用者和群组:

#groupadd mysql

#useradd -g mysql mysql2解压缩Mysql-5.0.22.tar.gz源码包

#cd /home

#tar zxvf Mysql-5.0.22.tar.gz3进入源码目录编译安装

#cd /home/Mysql-5.0.22

#../configure --prefix=/usr/local/mysql --with-unix-socket-path=/usr/local/mysql/var/mysql.sock --with-tcp-port=3306 --with-mysqld-user=mysql --with-charset=gb2312

#make

#make install4替换/etc/my.cnf文件,进入源码包,执行命令

#cp support-files/my-medium.cnf /etc/my.cnf5完成以上操作以后进行初始化数据库,进入已经安装好的mysql目录

#cd /usr/local/mysql

#bin/mysql_install.db --user=mysql |注:--user=mysql 初始化表并且规定用mysql用户6设置给mysql和root用户设定访问权限 我们先进入mysql目录

#cd /usr/local/mysql

#chown –R root /usr/local/mysql |注:设定root能访问/usr/local/mysq

#chown –R mysql /usr/local/mysql/var |注:设定mysql用户能访问/usr/local/mysql/var

#chgrp –R mysql /usr/local/mysql |注:设定mysql组能够访问/usr/local/mysql7启动mysql,进入已经安装好的目录

#cd /usr/local/mysql

#bin/mysqld_safe --user=mysql 8设定开机就启动mysql,进入源码目录下

#cd /usr/local/mysql/share

#cp mysql.server /etc/init.d/mysql#cd /etc/rc3.d

#ln –s ../init.d/mysql S64mysql

#ln –s ../init.d/mysql K36mysql#cd /etc/rc5.d

#ln –s ../init.d/mysql S64mysql

#ln –s ../init.d/mysql K36mysql#cd ../init.d

#chmod 755 mysql