背景:
因项目需要,需要访问搭建在云服务器(轻量云服务器)上Mysql数据库信息
实现方式:
1、Mysql数据库直连(需要驱动文件);
2、ODBC连接(无需驱动文件)。
实现方法:
常规数据库连接:设置连接数据库类型为“QMYSQL”,设置主机名、数据库名称、端口号、用户名、用户密码即可。但是,当使用VS创建好工程后,编写好Mysql数据库连接和访问语句功能时,VS输出窗口会提示你缺少数据库驱动,弹出提示驱动未加载错误消息。此时你必须使用QT官方源码编译驱动文件并在编译后地dll和lib分别放在已安装QT路径下地驱动路径和库文件路径下。
QT官网源码路径:Index of /archive/qt
源码编译博主参考:Qt Mysql驱动编译_编译mysql驱动的源码-CSDN博客
实现方法二:
常规数据库连接:设置连接数据库类型为“QODBC”,设置主机名、数据库名称、端口号、用户名、用户密码即可。运行程序前必须使用ODBC数据源管理程序(x64)配置用户数据源,配置成功后即可连接成功。
源代码(示例工程已上传)
.h
#pragma once
#include <QDebug>
#include <QSqlQuery>
#include <QSQLError>
#include <QSqlDatabase>
#include <QtWidgets/QMainWindow>
#include "ui_CMainWidget.h"
using namespace std;
class CMainWidget : public QMainWindow
{
Q_OBJECT
public:
CMainWidget(QWidget *parent = Q_NULLPTR);
// 连接数据库
bool connectDB();
// 查询数据库信息
int queryMqsqlDataBaseInfo();
private:
Ui::CMainWidgetClass ui;
QSqlDatabase m_pDB;
};
.cpp
#include "CMainWidget.h"
CMainWidget::CMainWidget(QWidget *parent)
: QMainWindow(parent)
, m_pDB()
{
ui.setupUi(this);
int nRet = queryMqsqlDataBaseInfo();
qDebug() << nRet;
}
bool CMainWidget::connectDB()
{
m_pDB = QSqlDatabase::addDatabase("QMYSQL"); //QODBC QMYSQL
m_pDB.setHostName("127.0.0.0"); // 使用云服务器地址
m_pDB.setDatabaseName("zhongguo"); // 数据库名称
m_pDB.setPort(3306);
m_pDB.setUserName("root");
m_pDB.setPassword("root"); // 密码
if (!m_pDB.open())
{
qDebug() << m_pDB.lastError();
return false;
}
return true;
}
int CMainWidget::queryMqsqlDataBaseInfo()
{
if (!connectDB())
{
return 1;
}
// 使用数据库语句测试访问是否成功
QSqlQuery query;
query.prepare("UPDATE user_login set pwd = :passwd WHERE user_name = '1';");
query.bindValue(":passwd", "15");
bool ret = query.exec();
if (ret)
{
while (query.next())
{
qDebug() << u8"already update success!";
}
}
else
{
QString strErrMsg = query.lastError().driverText();
qDebug() << strErrMsg;
return 3;
}
return 2;
}
属性文件