安装好Qt和MySQL数据库后编写并运行Qt下访问MySQL数据库的程序后会提示QSqlDatabase:QMySQL driver not loaded,经查询是Qt下没有支持MySQL数据库的驱动,在Ubuntu和Fedora系统下只需在终端输入一个命令就可已解决而Windows下要自己编译出驱动后再拷贝到Qt的驱动程序库中。下面给出编译步骤
1 由于MySQL的默认安装路径中有空格,qmake工具无法编译,所以先把MySQL安装目录下的include和lib目录拷贝到没有空格的路径下,比如U:\dev\Program\MySQL(这步很重要)
2.重新编译Mysql驱动
打开 Qt 的命令行终端,点击开始菜单,Qt 5.4.1\5.4\MinGW 4.9 (32-bit),见下图
或者使用指令增加PATH:
set PATH=U:\dev\Program\Qt\5.4\mingw491_32\bin;U:\dev\Program\Qt\Tools\mingw491_32\bin;%PATH%
cd U:\dev\Program\Qt\5.4\Src\qtbase\src\plugins\sqldrivers\mysql
qmake “INCLUDEPATH+=U:\dev\Program\MySQL\include” “LIBS+=U:\dev\Program\MySQL\lib\libmysql.lib” -o Makefile mysql.pro
mingw32-make
OK ,编译好了
如果你出现了一系列错误,比如 找不到#include
3.重新配置MySQL驱动
将 U:\dev\Program\Qt\5.4\Src\qtbase\plugins\sqldrivers 文件夹下面的 qsqlmysql.dll 和 qsqlmysqld.dll 复制到U:\dev\Program\Qt\5.4\mingw491_32\plugins\sqldrivers.
4.复制libmysql.dll到系统目录下
将U:\dev\Program\MySQL\lib\下的libmysql.dll, libmysqld.dll 复制到 U:\dev\Program\Qt\5.4\mingw491_32\bin
#include#include #include #include #include #include int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); // 使用mysql数据库驱动 db.setHostName("localhost"); db.setDatabaseName("test"); // 数据库名称 db.setUserName("root"); // 用户名 db.setPassword(""); // 密码 bool ok = db.open(); // 尝试连接数据库 if(ok) { QSqlQuery myquery; if(myquery.exec("select * from test")) { int num = 0; if(db.driver()->hasFeature(QSqlDriver::QuerySize)) { num = myquery.size(); // 如果支持结果影响的行数,那么直接记录下来 } else { myquery.last(); //否则定位到结果最后 num = myquery.at() + 1; } std::cout<