[关闭]
@lovemiffy 2016-07-18T13:53:02.000000Z 字数 2866 阅读 4189

Ubuntu 16.04 x64 Qt 5.6连接MySQL数据库笔记

Qt MySQL Ubuntu Qt连接MySQL 环境搭建


1. 安装Qt、MySQL并配置MySQL

1.1 安装Qt 5.6,访问Qt官方网站,下载qt-opensource-linux-x64-5.6.0.run进行安装。

1.2 安装MySQL,并创建数据库和用户

  1. sudo apt-get install mysql-server
  2. sudo apt-get install mysql-client
  3. mysql -u root -p
  4. create database TestDB;

创建完数据库后,检查是否创建好了

  1. show databases;

创建用户并且分配密码

  1. insert into mysql.user(Host,User,Password) values("localhost","TestUser",password("123456"));

注意:如果是5.7版之后的MySQL数据库,执行该语句可能会报错:

  1. ERROR 1054 (42S22): Unknown column 'Password' in 'field list'

这是因为新版mysql数据库下已经没有password这个字段了,password字段改成了
authentication_string,那么执行下列这行语句[1]

  1. CREATE USER 'TestUser'@'localhost' IDENTIFIED BY '123456';

添加用户后进行刷新

  1. flush privileges;

对用户进行授权

  1. grant all privileges on TestDB.* to TestUser@localhost identified by "123456";

再次进行刷新

  1. flush privileges;

2. 安装Qt连接MySQl相关库

2.1 安装libmysqlclient-dev

  1. sudo apt-get install libmysqlclient-dev
  2. sudo apt-get install libqt5sql5-mysql

安装完后,在以下目录检查是否存在libqsqlmysql.so

  1. /opt/Qt5.6.0/5.6/gcc_64/plugins/sqldrivers

注意:随Qt安装方式以及版本不同,路径/opt/Qt5.6.0/5.6/gcc_64可能存在差异。
在该目录下进入终端,执行

  1. ldd libqsqlmysql.so

执行后,若发现存在下列问题:

  1. libmysqlclient_r.so.16 => not found
  2. libssl.so.10 => not found
  3. libcrypto.so.10 => not found

则按照下列第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,参照下列命令。

  1. sudo cp /home/xiaoyafu/下载/libmysqlclient.so.16 /usr/lib/x86_64-linux-gnu
  2. cd /usr/lib/x86_64-linux-gnu
  3. sudo mv libmysqlclient.so.16 libmysqlclient_r.so.16

执行完后,重新执行步骤2.1中的ldd libqsqlmysql.so,检查是否解决了该问题。

2.3 解决libssl.so.10 => not foundlibcrypto.so.10 => not found的问题。执行下列命令:

  1. sudo apt-get update
  2. sudo apt-get install libssl1.0.0 libssl-dev
  3. cd /lib/x86_64-linux-gnu
  4. sudo ln -s libssl.so.1.0.0 libssl.so.10
  5. sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10

执行完后,重新执行步骤2.1中的ldd libqsqlmysql.so,检查是否解决了该问题。

3. 运行测试

3.1 启动MySQL,执行:

  1. sudo /etc/init.d/mysql start

执行后,检查MySQL是否正常启动,执行查看命令:

  1. service mysql status

3.2 创建Qt MySQl连接测试工程,创建后需要修改.pro文件,在其中加入sql模块

  1. QT += core gui sql

以下是函数代码:

  1. #include <QApplication>
  2. #include <QMessageBox>
  3. #include <QDebug>
  4. #include <QtSql/QSqlDatabase>
  5. #include <QtSql/QSqlDriver>
  6. #include <QtSql/QSqlError>
  7. int main(int argc, char *argv[])
  8. {
  9. QApplication a(argc, argv);
  10. qDebug() << QCoreApplication::libraryPaths();
  11. qDebug() << QSqlDatabase::drivers()<<endl; /*列出qt可用的数据库*/
  12. /*
  13. * 链接mysql数据库
  14. */
  15. QCoreApplication::addLibraryPath("/opt/Qt5.6.0/5.6/gcc_64/plugins/sqldrivers/libqsqlmysql.so");
  16. QSqlDatabase db(QSqlDatabase::addDatabase("QMYSQL"));
  17. db.setHostName("127.0.0.1");
  18. db.setDatabaseName("TestDB");
  19. db.setUserName("TestUser");
  20. db.setPassword("123456");
  21. if (!db.open()) /*测试数据库是否链接成功*/
  22. {
  23. QMessageBox::critical(0, QObject::tr("Databse Error"), db.lastError().text());
  24. qDebug() << db.lastError() << endl;
  25. }
  26. else
  27. {
  28. qDebug() << "Ok" << endl;
  29. }
  30. return 0;
  31. }

3.3 运行该工程,成功,如下图所示。

image_1anrr8slpn4b62u1c7f1dqq1tllm.png-112.5kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注