Ubuntu Linux下使用Qt连接MySQL数据库的方法
在Ubuntu系统中开发Qt应用时,连接MySQL数据库是常见需求。本文通过安装MySQL服务端、配置Qt SQL驱动库及编写基础测试代码三个步骤,提供完整的本地环境搭建与连接方案。
环境准备与MySQL安装
首先需要确保Ubuntu系统已安装MySQL服务。对于桌面版Ubuntu,最简单的方式是通过软件中心或终端安装客户端与服务端:
- 打开软件中心搜索mysql,勾选client和server进行安装。
或者使用终端命令:sudo apt-get install mysql-server mysql-client - 安装过程中会提示为root用户设置密码,请务必牢记该密码。
默认情况下,直接使用mysql命令可能会因当前Linux用户名无数据库权限而报错(如ERROR 1045)。若需添加普通用户供程序调用,可登录root后执行授权操作:
mysql -uroot -p
grant usage on *.* to dummy@localhost identified by 'your_password';
注意:此操作仅为赋予登录权限,创建数据库等操作仍需管理员权限或更高权限账号。
部署Qt的MySQL驱动
Qt需要通过插件形式加载MySQL驱动。以下提供两种常用的部署方式:
第1步:预编译驱动安装法(推荐)
这是最快捷的方法,直接安装系统提供的Qt MySQL SQL插件包:
执行命令:sudo apt-get install libqt4-sql-mysql
安装完成后,找到生成的动态链接库文件libqsqlmysql.so。通常位于:/usr/lib/qt4/plugins/sqldrivers/
需要将该文件拷贝到当前Qt项目使用的SDK目录下的对应位置。例如,若使用QtSDK Desktop GCC版本,目标路径通常为:~/QtSDK/Desktop/Qt/473/gcc/plugins/sqldrivers/
第2步:手动下载解压法
如果不想自动安装额外依赖,可以仅下载该包的deb文件并提取so库:
1. 执行:sudo apt-get download libqt4-sql-mysql
2. 解压下载的deb包,从中找出libqsqlmysql.so。
3. 将其拷贝至上述Qt SDK对应的sqldrivers目录中。
注意:自行从源码编译驱动在新版本QtSDK中较为困难,因为官方安装包通常不包含src目录且未默认包含MySQL源,故不建议初学者尝试。
编写连接测试代码
在确认驱动文件就位后,需要在Qt项目中启用SQL模块并编写连接逻辑。
第3步:配置项目文件
打开项目的.pro文件,确保在QT变量中添加了sql模块:
QT += core gui sql
保存后重新运行qmake(Build → Run qmake)以更新构建系统。
第4步:编写C++连接代码
新建一个控制台应用程序或使用现有项目,引入必要的头文件并初始化连接。以下代码演示了使用QSqlDatabase建立本地连接:
#include <QtCore/QCoreApplication>
#include <QSqlDatabase>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 添加MySQL驱动实例
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
// 设置连接参数
db.setHostName("localhost");
db.setDatabaseName("study"); // 请替换为实际存在的数据库名
db.setUserName("root"); // 请替换为实际用户名
db.setPassword("tyh"); // 请替换为实际密码
// 尝试打开连接
if(!db.open()){
qDebug() << "Unable to open database";
} else {
qDebug() << "Database connection established";
}
return a.exec();
}
常见问题排错
- 错误日志显示“Unable to open database”:
首先检查libqsqlmysql.so是否已成功复制到Qt的plugins目录下。其次,确保MySQL服务正在运行(可通过sudo service mysql status查看)。最后,核对代码中的主机名、数据库名、用户名和密码是否正确。 - 缺少相关依赖库:
如果在运行时提示找不到特定共享库,可能需要安装libmysqlclient-dev等底层开发库。 - 权限不足:
如果使用的是非root用户连接,请确保该用户在MySQL中具有对指定数据库的操作权限。
以上就是在Ubuntu Linux环境下使用Qt连接MySQL数据库的详细内容,更多关于Qt SQL编程的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









