Ubuntu 16.04 x64 Qt 5.6连接MySQL数据库笔记
来源:互联网 发布:linux运维很忙吗 编辑:程序博客网 时间:2024/06/06 04:08
(本人在作业部落上的原文:https://www.zybuluo.com/lovemiffy/note/435940)
1. 安装Qt、MySQL并配置MySQL
1.1 安装Qt 5.6,访问Qt官方网站,下载qt-opensource-Linux-x64-5.6.0.run进行安装。
1.2 安装MySQL,并创建数据库和用户
sudo apt-get install mysql-serversudo apt-get install mysql-clientmysql -u root -pcreate database TestDB;
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
创建完数据库后,检查是否创建好了
show databases;
- 1
- 1
创建用户并且分配密码
insert into mysql.user(Host,User,Password) values("localhost","TestUser",password("123456"));
- 1
- 1
注意:如果是5.7版之后的mysql数据库,执行该语句可能会报错:
ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
- 1
- 1
这是因为新版mysql数据库下已经没有password这个字段了,password字段改成了
authentication_string,那么执行下列这行语句1:
CREATE USER 'TestUser'@'localhost' IDENTIFIED BY '123456';
- 1
- 1
添加用户后进行刷新
flush privileges;
- 1
- 1
对用户进行授权
grant all privileges on TestDB.* to TestUser@localhost identified by "123456";
- 1
- 1
再次进行刷新
flush privileges;
- 1
- 1
2. 安装Qt连接MySQl相关库
2.1 安装libmysqlclient-dev
sudo apt-get install libmysqlclient-devsudo apt-get install libqt5sql5-mysql
- 1
- 2
- 1
- 2
安装完后,在以下目录检查是否存在libqsqlmysql.so
/opt/Qt5.6.0/5.6/gcc_64/plugins/sqldrivers
- 1
- 1
注意:随Qt安装方式以及版本不同,路径/opt/Qt5.6.0/5.6/gcc_64可能存在差异。
在该目录下进入终端,执行
ldd libqsqlmysql.so
- 1
- 1
执行后,若发现存在下列问题:
libmysqlclient_r.so.16 => not foundlibssl.so.10 => not foundlibcrypto.so.10 => not found
- 1
- 2
- 3
- 1
- 2
- 3
则按照下列第2.2步和第2.3步的方法进行解决2。
2.2 解决libmysqlclient_r.so.16 => not found
的问题。下载 libmysqlclient.so.16,地址:http://files.directadmin.com/services/debian_5.0_64/libmysqlclient.so.16
下载后将该文件拷贝至/usr/lib/x86_64-linux-gnu
,并重命名为libmysqlclient_r.so.16
,参照下列命令。
sudo cp /home/xiaoyafu/下载/libmysqlclient.so.16 /usr/lib/x86_64-linux-gnucd /usr/lib/x86_64-linux-gnusudo mv libmysqlclient.so.16 libmysqlclient_r.so.16
- 1
- 2
- 3
- 1
- 2
- 3
执行完后,重新执行步骤2.1中的ldd libqsqlmysql.so
,检查是否解决了该问题。
2.3 解决libssl.so.10 => not found
和libcrypto.so.10 => not found
的问题。执行下列命令:
sudo apt-get updatesudo apt-get install libssl1.0.0 libssl-devcd /lib/x86_64-linux-gnusudo ln -s libssl.so.1.0.0 libssl.so.10sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
执行完后,重新执行步骤2.1中的ldd libqsqlmysql.so
,检查是否解决了该问题。
3. 运行测试
3.1 启动MySQL,执行:
sudo /etc/init.d/mysql start
- 1
- 1
执行后,检查MySQL是否正常启动,执行查看命令:
service mysql status
- 1
- 1
3.2 创建Qt MySQl连接测试工程,创建后需要修改.pro文件,在其中加入sql
模块
QT += core gui sql
- 1
- 1
以下是函数代码:
#include <QApplication>#include <QMessageBox>#include <QDebug>#include <QtSql/QSqlDatabase>#include <QtSql/QSqlDriver>#include <QtSql/QSqlError>int main(int argc, char *argv[]){ QApplication a(argc, argv); qDebug() << QCoreApplication::libraryPaths(); qDebug()<<QSqlDatabase::drivers()<<endl; /*列出qt可用的数据库*/ /* * 链接mysql数据库 */ QCoreApplication::addLibraryPath("/opt/Qt5.6.0/5.6/gcc_64/plugins/sqldrivers/libqsqlmysql.so"); QSqlDatabase db(QSqlDatabase::addDatabase("QMYSQL")); db.setHostName("127.0.0.1"); db.setDatabaseName("TestDB"); db.setUserName("TestUser"); db.setPassword("123456"); if (!db.open()) /*测试数据库是否链接成功*/ { QMessageBox::critical(0, QObject::tr("Databse Error"), db.lastError().text()); qDebug()<<db.lastError()<<endl; } else { qDebug()<<"Ok"<<endl; } return 0;}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
3.3 运行该工程,成功,如下图所示。
- 参考:http://blog.csdn.net/u010603691/article/details/50379282,https://dev.mysql.com/doc/refman/5.7/en/adding-users.html↩
- 此解决方法引用博客文章:http://blog.csdn.net/seamanj/article/details/51429125↩
- Ubuntu 16.04 x64 Qt 5.6连接MySQL数据库笔记
- Ubuntu 16.04 x64 Qt 5.6连接MySQL数据库笔记
- Ubuntu 下使用Qt连接MySQL数据库
- Ubuntu QT C连接mysql数据库
- ubuntu Qt连接MySQL
- qt连接mysql数据库
- Qt 连接MySQL数据库
- Qt连接MySql数据库
- Qt 连接MYSQL数据库
- Qt连接MySQL数据库
- QT---连接mysql数据库
- Qt 连接MySQL数据库
- QT连接MYSQL数据库
- Qt连接MySQL数据库
- ubuntu linux 下使用Qt连接MySQL数据库
- qt连接数据库(MySQL)
- Qt远程连接MySql数据库
- Qt远程连接MySql数据库
- 关于librdkafka设置手动提交
- Shell 循环中实现展示进度百分比的脚本方法
- 产品经理or项目经理
- VSFTP安全加固
- zookeeper配置安装过程的问题解决
- Ubuntu 16.04 x64 Qt 5.6连接MySQL数据库笔记
- 一款支持大恒相机、IDS相机、普通USB相机和机械手的标定工具
- Watching a movie CodeForces
- Java基础知识点个人笔记(1)
- table标签与列表标签
- shell 循环中实现展示进度百分比的脚本方法2
- 微信小程序图片轮播
- Js 数组总结
- UVA 10655 Contemplation! Algebra(矩阵乘法)