在前面的 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·