最经在测试一个项目时用到MYSQL 数据库 ,QT下如何使用MYSQL ,网上搜一遍 ,回答各异,群里问一遍,结果回答的都是皮毛 ,不能解决问题,现在自己的故障重现,让后来者免遭炼狱之苦.
1,项目:我的项目是QT4.5开发的,使用MYSQL 数据库.
2,环境: 我的开发环境是:WINDOWS XP SP2 我的QT工具 是QT5.7 最新 调试minGW 编辑器 QT CREATOR 4.4,没有使用VS版的 网上说QT5.7 不支持XP 但是测试结果不是这样,官网也没有查到5.7配套XP 的版本 但是实际使用minGW,完全可以在XP下工作 没有任何问题.
2升级:刚才说了,那个醒目是QT4.5工程 需要在QT5.7里打开 重新配置不过这个没有多少难度,可以看以前的博文 QT升级.
升级后软件启动提示:
3按照有关说明 说是没有MYSQL数据库驱动 于是到
D:\Qt\Qt5.7.0\5.7\mingw53_32\plugins\sqldrivers (这是我的QT安装目录 个人有异)
明显看到自己目录下有MYSQL 驱动插件
但就是不能连接 ,其实MYSQL属于第三方服务 本身没有在QT包含 这里只是提供一个连接接口,既然这样说明我们还需要第三方软件MYSQL
于是到网站下载,MYSQL5.7 越新越好,结果测试还是不能连接
#include <QCoreApplication>
#include <QtSql/QSql>
#include <QSql>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>
#include <QVariant>
#include <QWidget>
#include <QMessageBox>
#include <QSqlError>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// QSqlDatabase db= QSqlDatabase::addDatabase("QMYSQL");//QSQLITE
// db.setDatabaseName(":memory:");
//if(!db.open())
// {
// return false;
//}
/*
QSqlQuery query;
query.exec("create table student(id int primary key,name varchar)");
query.exec("insert into student value(‘1,xiaogang‘)");
query.exec("insert into student value(‘2,wangwu‘)");
query.exec("insert into student value(‘3,lisi‘)");
query.exec("slect id name from student where id>2 ");
while(query.next())
{
int ele0=query.value(0).toInt();
QString ele1=query.value(1).toString();
qDebug() << ele0 << ele1 ;
}
*/
/*
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");
db.setDatabaseName("testsql");
db.setUserName("root");
db.setPassword("root");
bool ok = db.open();
qDebug() << ok;
hostname=localhost
database=bpmstest
username=root
password=123456
*/
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");//localhost
db.setPort(3306);
db.setDatabaseName("testsql");
db.setUserName("root");
db.setPassword("123456");
bool ok = db.open();//寤虹珛鏁版嵁搴撹繛鎺?
if(!ok)
{
// QMessageBox::critical(0,QObject::tr("杩炴帴鏁版嵁搴撳け璐ワ紒锛侊紒"),db.lastError().text());
qDebug() << ok;
// return false;
}
else
{
//QMessageBox::information(0,QObject::tr("Tips"),QObject::tr("杩炴帴鏁版嵁搴撴垚鍔燂紒锛侊紒"));
qDebug() << ok<<123;
return true;
}
//鐪嬩笅 鎻愮ず浠涔堜俊鎭?锛?
return a.exec();
}
看来必须安装MYSQL 于是 下载安装MYSQL 装好后 结果不知道那个是MYSQL启动项
4这样在自己的环境中就有了MYSQL 数据库
然后启动自己的软件