欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Qt4.8.7连接MySql数据库(windows环境)

程序员文章站 2024-01-03 14:08:10
...

1.软件准备

2.安装MySql

安装完成后,D盘根目录新建一个MySql文件夹,把D:\Program Files (x86)\MySQL\MySQL Server 5.5目录下的include和lib文件夹拷贝到C:\MySql。此处为了避免MySQL安装路径有空格,导致后续编译MySQL驱动报错,qmake mysql.pro报错但有些情况下没有影响

3.编译Qt的MySql驱动

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("192.168.2.128");
db.setPort(3306);
db.setDatabaseName("sdjk");
db.setUserName("root");
db.setPassword("");
bool ok = db.open();
if (ok)
{
    qDebug() << QString("数据库打开成功");
}
else
{
    qDebug() << "数据库打开失败:" << db.lastError();
}

上面这段代码就是打开数据库的代码了,不出什么以外的话应该有下面这个错误:

QSqlDatabase: QMYSQL driver not loaded

QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC

数据库打开失败: QSqlError(-1, "Driver not loaded", "Driver not loaded") 

就是说没有MySql驱动,只有sqlite、odbc3、obdc驱动。

下面开始编译驱动:

  1. 打开D:\Qt\4.8.7\src\plugins\sqldrivers\mysql里面的mysql.pro
  2. pro文件里添加两行,就是包含前面Sql数据库的头文件和库,(不知道问什么第二行那样写不行,认不到)
    INCLUDEPATH += "C:/MySql/include"
    #LIBS += "C:/MySql/lib/libmysql.lib"
    LIBS += -LC:/MySql/lib \
        -lmysql

    编译,

  3. qmake mysql.pro

  4. make release 与make debug

  5. debug和release版本都编译一下,编译好后把debug下的libqsqlmysqld4.a、qsqlmysqld4.dll和release下的libqsqlmysql4.a、qsqlmysql4.dll拷贝到D:\Qt\4.8.7\plugins\sqldrivers

  6. 把C:\MySql\lib下的libmysql.dll拷贝到D:\Qt\4.8.7\bin下,发布程序的时候也要这个动态库。

错误2



D:\Qt\4.8.7\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1438: undefined reference to `[email protected]'
debug/qsql_mysql.o: In function `ZN12QMYSQLDriver16beginTransactionEv':
D:\Qt\4.8.7\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1456: undefined reference to `[email protected]'
debug/qsql_mysql.o: In function `ZN12QMYSQLDriver17commitTransactionEv':
D:\Qt\4.8.7\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1473: undefined reference to `[email protected]'
debug/qsql_mysql.o: In function `ZN12QMYSQLDriver19rollbackTransactionEv':
D:\Qt\4.8.7\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1490: undefined reference to `[email protected]'
debug/qsql_mysql.o: In function `ZNK12QMYSQLDriver11formatValueERK9QSqlFieldb':
D:\Qt\4.8.7\src\plugins\sqldrivers\mysql/../../../sql/drivers/mysql/qsql_mysql.cpp:1516: undefined reference to `[email protected]'
collect2.exe: error: ld returned 1 exit status
Makefile.Debug:77: recipe for target 'debug\qsqlmysqld4.dll' failed
mingw32-make[1]: *** [debug\qsqlmysqld4.dll] Error 1
mingw32-make[1]: Leaving directory 'D:/Qt/4.8.7/src/plugins/sqldrivers/mysql'
Makefile:34: recipe for target 'debug' failed
mingw32-make: *** [debug] Error 2

             此种情况,mysql64位系统,而QT为32位,位数不兼容,我重新卸载64位mysql,安装32位mysql成功解决。

相关标签: Qt

上一篇:

下一篇: