QxOrm 访问 MySQL

在前面的 QxOrm 章节中,我们已经介绍了对本地数据库的操作,现在是时候介绍对远程数据库的访问了,那么就以最常用的 MySQL 为例吧!

在开始之前,首先要安装 MySQL。如果条件允许,建议将其安装在 Linux 系统上,安装过程可参考《在 Ubuntu 上安装 MySQL》。在使用数据库时,建议结合数据库管理工具(例如:Navicat)一起,这有助于简化数据库的管理。

1

访问 MySQL

与操作 SQLite 类似,QxOrm 在访问 MySQL 时,仅需要对数据库配置稍作更改即可,其他部分几乎可以不做改动。

为了不对 MySQL 自带的数据库产生影响,我们先来建立一个测试数据库 test,下面的所有操作都在该数据库中进行:

在数据库建立成功之后,现在就可以将《QxOrm 快速上手》中的数据库配置部分从 SQLite:

// 初始化参数,用于和数据库交互
qx::QxSqlDatabase::getSingleton()->setDriverName("QSQLITE");
qx::QxSqlDatabase::getSingleton()->setDatabaseName("./Users.db");
qx::QxSqlDatabase::getSingleton()->setHostName("localhost");
qx::QxSqlDatabase::getSingleton()->setUserName("root");
qx::QxSqlDatabase::getSingleton()->setPassword("");

替换为 MySql 了:

// 配置 MySQL
qx::QxSqlDatabase::getSingleton()->setDriverName("QMYSQL");
qx::QxSqlDatabase::getSingleton()->setDatabaseName("test");
qx::QxSqlDatabase::getSingleton()->setHostName("192.168.***.***");
qx::QxSqlDatabase::getSingleton()->setUserName("root");
qx::QxSqlDatabase::getSingleton()->setPassword("password");
qx::QxSqlDatabase::getSingleton()->setPort(3306);

运行程序,然后查看上面创建的数据库,你会看到新建了一张 User 表,并且还添加了几条记录:

这就表明访问 MySql 成功了,是不是很简单呢! 

2

常见问题

在访问远程 MySql 数据库时,难免会出现各种各样的问题,导致最终连接失败,下面来总结下常见的一些原因。

MySql 驱动加载失败

这是 Qt 中的一个典型问题,只要操作 MySql 数据库,就会遇到:

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7

要解决它,可以参考《QMYSQL driver not loaded 原理及解决方案》,里面写的很详细!

无法访问远程 MySql 数据库

这个原因就比较多了,以下情况都有可能:

  • MySql 服务未开启

  • 防火墙限制 3306 端口访问

  • MySQL 监听的仅是本机 IP

  • 未赋予账号远程登录权限

有关这几个问题的解决方案,可参考《在 Ubuntu 上安装 MySQL》一文。

所以呢,QxOrm 操作 MySQL 并没有想象中那么难,只要解决好驱动加载和远程连接问题就可以了。

·END·
 

发布了473 篇原创文章 · 获赞 4162 · 访问量 594万+

猜你喜欢

转载自blog.csdn.net/u011012932/article/details/105071478