一、ODBC方式远程连接MySQL数据库
void createMySQLConnByODBC() {
qDebug() << "Qt 6支持的数据库驱动有:" << QSqlDatabase::drivers();
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("mysql_on_alicloud");//是你在ODBC中创建的DSN-Data Source Name
if (!db.open()) {
QMessageBox::warning(0, QObject::tr("提示"), QObject::tr("连接失败!\r\n") + db.lastError().driverText());
} else{
QMessageBox::information(0, QObject::tr("提示"), QObject::tr("连接成功!"));
QSqlQuery result = db.exec("select user from user;");
while (result.next())
qDebug() << result.value("user").toString();
}
}
说明:通过Windows操作系统的ODBC数据源(64位)创建用户DSN或者系统DSN时,请选择“MySQL ODBC 8.0 Unicode Driver”。
二、DSN方式远程连接MySQL数据库(程序方式创建ODBC)
void createMySQLConnByDSN() {
qDebug() << "Qt 6支持的数据库驱动有:" << QSqlDatabase::drivers();
QString dsn = "Driver={MySQL ODBC 8.0 UniCode Driver};"; // Driver is now {MySQL}
dsn.append("Server=远程服务器IP,3306;"); // IP,Port
dsn.append("Database=mysql;"); // Schema
dsn.append("Uid=root;"); // User
dsn.append("Pwd=数据库密码;"); // Password
dsn.append("MULTI_HOST=1;");
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName(dsn);
bool success = db.open();
if (!success)
qDebug() << "未能连接MySQL数据库!" << db.lastError();
else {
QMessageBox::information(0, QObject::tr("提示"), QObject::tr("连接成功!"));
QSqlQuery result = db.exec("select user from user;");
while (result.next())
qDebug() << result.value("user").toString();
}
}
三、直连方式远程连接MySQL数据库
void createMySQLConnServer(){
qDebug() << "Qt 6支持的数据库驱动有:" << QSqlDatabase::drivers();
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setPort(3306); // MySQL数据库端口
db.setUserName("root"); // 用户名
db.setPassword("数据库密码"); // 密码
db.setDatabaseName("数据库名称"); // 数据库名称
db.setHostName("服务器IP"); // MySQL远程服务器IP地址
if (db.open()) { // 连接成功
QMessageBox::information(0, QObject::tr("提示"), QObject::tr("-^- 数据库连接成功!!!-^-"));
} else { // 连接失败
QMessageBox::critical(0, QObject::tr("数据库连接失败"),
QObject::tr("*** 无法创建连接!!!***\r\n请检查排除故障后重启程序。"),
QMessageBox::Cancel);
//QMessageBox::warning(0, QObject::tr("提示"), QObject::tr("*** 数据库连接失败!!!***\r\n%1").arg(db.lastError().driverText()));
}
}
参考网址一:https://blog.csdn.net/joey_ro/article/details/105411135?spm=1001.2101.3001.6661.1&depth_1-utm_relevant_index=1
参考网址二:https://blog.csdn.net/YanWenCheng_/article/details/116567098