qt 连接mysql

安装好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),见下图
menu
或者使用指令增加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 等等了,这就是你的qmake 后面的路径包含空格了,在好好检查一下吧

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<
											

关于Zeno Chen

本人涉及的领域较多,杂而不精 程序设计语言: Perl, Java, PHP, Python; 数据库系统: MySQL,Oracle; 偶尔做做电路板的开发,主攻STM32单片机
此条目发表在C/C++分类目录。将固定链接加入收藏夹。