1.首先说一下自己的经历,一开始我用了网上的实例代码,如下:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("managementsystem");
db.setUserName("root");
db.setPassword("root");
if (!db.open())
cout<<"can't open!";
else
cout<<"open!";
2.然后出现了如下的问题
在网上查过后才发现这是因为没有在它的.pro文件中加入QT += sql
3.但是加入了以后,会出现这样的问题
然后又跑到了网上查了一通,发现网上的解决办法有如下两种:
i:将mysql下的ilbmysql.lib和libmysql.dll复制到Qt的bin目录下
很高兴的以为要成了,没想到还是 QMYSQL driver not load,然后又从网上查了一下,自己有可能是这个版本
没有带驱动的原因,然后,我发现我这个版本的Qt带着驱动:
这下子没招了,只能是一边问人一边接着查了,然后发现了方法ii
方法ii: 因为Qt的驱动可能和mysql的版本不一样,所以需要重新编译,没办法,接着试吧:
这里我参考了QMYSQL driver not loaded 的原理和解决办法-CSDN博客的方法,不过在编译mysql.pro的时候
又出现了问题,我已经导入了include文件,还是mysql is not define这个错误,没脾气。然后又是试了网上所说的
手动编译,手动加载,甚至下载了32位的数据库和Qt,还是出现大一堆问题。
最终解决办法:使用ODBC连接mysql
1.实例代码
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setHostName("127.0.0.1");
db.setPort(3306);
db.setDatabaseName("mytest");
db.setUserName("root");
db.setPassword("root");
if (!db.open())
cout<<"can't open!";
else
cout<<"open!";
MainWindow w;
w.show();
return a.exec();
}
2.在.por文件中加入QT += sql
3.添加ODBC数据源,在控制面板中找到管理工具,其中有ODBC数据源,我用的是64位的,打开后添加
最上面的那个自己写一下,要和“db.setDatabaseName("mytest");”保持一致,然后终于成功了!超开心。