环境配置参考:
linux:Ubuntu14.04安装MySql和本地Windows Navicat for MySql远程连接MySql
测试代码:
#include "dialog.h"
#include <QApplication>
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QtDebug>
void check_Sqldrivers()
{
qDebug()<<"Available drivers:";
QStringList drivers=QSqlDatabase::drivers();
foreach(QString dvr,drivers)
{
qDebug()<<dvr;
}
}
void test_connect_mysql()
{
/*输出当前QT所支持的数据库版本驱动*/
check_Sqldrivers();
/*声明一个QMySql的对象实例*/
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
/*连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost)*/
db.setHostName("192.168.0.102");
/*连接数据库端口号,与设置一致*/
db.setPort(3306);
/*连接数据库名,与设置一致,MySql服务器中存在的*/
db.setDatabaseName("testWinConnToUbuntuMySql");
/*数据库用户名,与设置一致*/
db.setUserName("root");
/*数据库密码,与设置一致*/
db.setPassword("123456789");
/*打开数据库*/
db.open();
if(!db.open())
{
qDebug()<<"连接失败"<<"connect to mysql error"<< db.lastError().text();
return ;
}
else
{
qDebug()<<"连接成功"<<"connect to mysql OK";
}
/* 对数据库的操作... */
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//Dialog w;
//w.show();
test_connect_mysql();
return a.exec();
}
测试输出:
Available drivers:
"QSQLITE"
"QMYSQL"
"QMYSQL3"
"QODBC"
"QODBC3"
"QPSQL"
"QPSQL7"
连接成功 connect to mysql OK
遇到QMYSQL driver not loaded:
确认远程MySql服务器已开启。去MySql官网下载:mysql-connector-c-6.1.11-win32.zip 我的QT是32位版本
解压mysql-connector-c-6.1.11-win32.zip,
1.将文件夹复制到一个没有空格和汉字的目录里:如E:\Qt
2.找到E:\Qt\mysql-connector-c-6.1.11-win32\lib这个文件夹中的 libmysql.dll 和 libmysql.lib
3.复制 libmysql.dll 和 libmysql.lib到QT安装目录E:\Qt\Qt5.7.1\5.7\mingw53_32\bin\
4.如果第3步无法成功,则还需要将 libmysql.dll 和 libmysql.lib 复制到当前工程debug目录中。
5.检查E:\Qt\Qt5.7.1\5.7\mingw53_32\plugins\sqldrivers 中是否有相关的数据库dll,MySql有两个:qsqlmysql.dll 和 qsqlmysqld.dll 如果没有则需要编译生成。
6.重启QT工程测试连接。