NanoPi Fire3:QT开发之MYSQL数据库

一、内容介绍

NanoPi Fire3是一款超小型八核Cortex-A53开源开发板,它采用三星S5P6818主控处理器,配备1GB DDR3内存,带千兆以太网接口,MicroHDMI,CMOS摄像头和RGBLCD等丰富的接口,兼容RPi GPIO,并内置QT5.10.0软件,尺寸只有75x40mm,本文将介绍如何在NanoPi Fire3开发板上,安装MYSQL并使用在QT5.10.0下开发的板上程序进行连接。

二、前置工作

1.在开始本文步骤之前,请先阅读以下文章:
《NanoPi Fire3:QT开发之编译与自启动》
https://blog.csdn.net/u010877050/article/details/103438750

2.本人所使用的的电脑系统为win10。开发板的镜像文件为s5p6818-sd-friendlycore-xenial-4.4-arm64-20191227.img

3.在电脑上使用QT5.10.0开发平台编写一个带有连接MYSQL数据库功能的程序,本文直接在前置工作1中的HelloWorld程序中加入了MYSQL的连接代码,只要修改2个文件HelloWorld.pro和main.cpp即可。

HelloWorld.pro

QT += quick sql
CONFIG += c++11

# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += main.cpp

RESOURCES += qml.qrc

# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =

# Additional import path used to resolve QML modules just for Qt Quick Designer
QML_DESIGNER_IMPORT_PATH =

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

main.cpp

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QDebug>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>

static bool createConnection(QString sysDbAddr)
{
    QSqlDatabase sysDb = QSqlDatabase::addDatabase("QMYSQL");
    sysDb.setHostName(sysDbAddr);         //连接数据库主机名
    sysDb.setPort(3306);                            //连接数据库端口号
    sysDb.setDatabaseName("helloworld");    //连接数据库名
    sysDb.setUserName("root");                //数据库用户名
    sysDb.setPassword("123456");            //数据库密码
    if(!sysDb.open())
    {
        qDebug()<<"connect to mysql error"<<sysDb.lastError().text();
        return false;
    }
    qDebug()<<"connect to mysql OK";
    return true;
}

int main(int argc, char *argv[])
{
#if defined(Q_OS_WIN)
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif

    QGuiApplication app(argc, argv);

    if(!createConnection("localhost"))
        return -1;

    QQmlApplicationEngine engine;

    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    if (engine.rootObjects().isEmpty())
        return -1;

    return app.exec();
}

4.下载qtbase的linux源码包,后面要用,这里提供QT官网该包的下载地址。
http://mirrors-wan.geekpie.club/qtproject/archive/qt/5.10/5.10.0/submodules/qtbase-everywhere-src-5.10.0.tar.xz

三、操作步骤

1.保证开发板连接至外网,使用Xshell登录开发板,输入以下3个命令安装mysql,安装过程中有可能因为网速太慢导致失败,如果失败了请更换网络再次尝试。

sudo apt-get update #更新软件源
sudo apt-get install mysql-server #安装mysql
sudo apt-get install libmysqlclient-dev #安装mysql-devel包

1)安装过程中会要求创建root用户的密码,与代码中的密码保持一致即可。
2)安装过程中可能有以下提示,没关系,没有啥影响。
在这里插入图片描述
2.启动mysql并登陆,新建一个空的数据库helloworld,并查看是否成功。
service mysql start
mysql -u root -p
你的密码
create database helloworld;
show databases;
在这里插入图片描述
3.将前置工作3中的程序放到板子上编译并运行,此时看到如下报错,说明板子内置的QT5.10.0只有sqlite的驱动,没有mysql的驱动(libqsqlmysql.so),所以我们需要自己在板子上编译mysql的驱动,但是板子上也没有QT的mysql源码文件,真是精简版啊,所以我们去官网下载源码包(前置工作4)。
在这里插入图片描述
输入以下命令发现,板子上确实只有sqlite的驱动文件。
cd /usr/local/Trolltech/Qt-5.10.0-nexell64/plugins/sqldrivers
ls
在这里插入图片描述
4.在Xshell中输入以下命令将源码包拷贝到开发板上并解压,本文对应路径为home/pi
rz
选择源码包
tar xvJf qtbase-everywhere-src-5.10.0.tar.xz

如果出现-bash: rz: command not found,输入以下代码安装一下rz工具包即可。
sudo apt-get install lrzsz

4.输入以下命令来到源码中mysql.pro的位置。
cd qtbase-everywhere-src-5.10.0/src/plugins/sqldrivers/mysql
在这里插入图片描述
5.输入以下命令进行编译。
sudo qmake-qt5 “INCLUDEPATH+=/usr/include/mysql” “LIBS+=-L/usr/lib/aarch64-linux-gnu -lmysqlclient” mysql.pro
make

这里有可能会报以下2种错,我们一一来解决:
1)qtsqldrivers-config.pri: No such file or directory
修改sqldrivers文件夹下的qtsqldrivers.pri文件。
注释掉include( s h a d o w e d ( shadowed( shadowed(PWD)/qtsqldrivers-config.pri)即可。
在这里插入图片描述
2)Library ‘mysql’ is not defined
修改mysql文件夹下的mysql.pro文件。
注释掉QMAKE_USE += mysql即可。
在这里插入图片描述

6.如果上一步成功编译了,那我们的libqsqlmysql.so也就生成好了,生成的路径为/home/pi/qtbase-everywhere-src-5.10.0/src/plugins/sqldrivers/plugins/sqldrivers/libqsqlmysql.so

7.最后一步,将我们生成的libqsqlmysql.so复制到对应的驱动文件夹下,可以输入以下指令进行复制,然后查看是否复制成功。
cp /home/pi/qtbase-everywhere-src-5.10.0/src/plugins/sqldrivers/plugins/sqldrivers/libqsqlmysql.so /usr/local/Trolltech/Qt-5.10.0-nexell64/plugins/sqldrivers
在这里插入图片描述

8.再次运行HelloWorld程序,发现Xshell输出了connect to mysql OK,说明已经连接到板子上的MYSQL数据库了。
在这里插入图片描述
9.另外有两点
1)这里提供作者已经编译好的libqsqlmysql.so文件,下载地址为
https://pan.baidu.com/s/1uUAZ5GuXCU7yzBCjCIPyLg,提取码n6hb
如果你手上的是NanoPi Fire3开发板(其它开发板或系统,不保证可行),安装完MYSQL,直接把这个文件放到对应的目录即可,省去编译的步骤。
2)使用以下命令安装已经编译好的库,虽然也能得到libqsqlmysql.so,但放到对应的目录下,执行程序时,会提示版本错误,所以还是自己动手编译吧。
sudo apt-get install libqt5sql5-mysql
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值