Qt5自带了MySQL库,所以不需要用户自己编译数据库文件;
1、确定Qt安装目录的lib文件下有Qtsql文件夹;
2、将MySQL安装目录的bin文件夹下的libmysql.dll文件复制到Qt安装目录的bin文件下;
在Qt中编写连接数据库的程序:
Pro文件中添加
QT += sql
头文件:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>
#include <QPluginLoader>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
fun();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
源文件:
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
fun();
}
Widget::~Widget()
{
delete ui;
}
Widget::fun()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");//MySQL地址
db.setPort(3306);//端口号
db.setDatabaseName("information");//连接的数据库名称
db.setUserName("root");//登录名称
db.setPassword("123456");//登录密码
if (db.open())
qDebug()<<"成功";
else
qDebug()<<"失败";
return false;
}
主函数:main
#include "widget.h"
#include <QApplication>
void loadMySqlDriver()
{
QPluginLoader loader;
// MySQL 驱动插件的路径
loader.setFileName("F:/Qt5.4.0mingw/anzhuangfile/5.4/mingw491_32/plugins/sqldrivers/qsqlmysqld.dll");
qDebug() << loader.load();
qDebug() << loader.errorString();
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// loadMySqlDriver();
Widget w;
w.show();
return a.exec();
}
Qt与MySQL数据库连接的过程中,分为两个部分:一个是Qt自带MySQL库,一个是MySQL自己dll库
搞清楚之后,运行程序的时候,系 统就会调用MySQL的libmysql.dll动态链接库
至于网上说的:
出现drivers not loaded错误,需要手动添加MySQL链接库。
--主函数中注释掉loadMySqlDriver()函数,数据库仍然连接成功,所以并不用手动加载MySQL动态链接库。
程序编写需要注意的几个问题是:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1"); //MySQL地址:本地服务器地址
db.setPort(3306); //端口号
db.setDatabaseName("information"); //连接的数据库名称
db.setUserName("root"); //登录名称
db.setPassword("123456"); //登录密码
端口号、数据库名称、登录名称、登录密码都需要跟ODBC添加数据库驱动时,设置的变量一致。