[话题] 【NanoPi M2试用体验】之基于QT图形界面编程操作MySQL数据库

[复制链接]

助理工程师

发表于 2016-5-19 21:04:35   2514 查看 9 回复 显示全部楼层 倒序浏览
分享
本帖最后由 zxl_zxl 于 2016-5-19 21:09 编辑

Nanopi M2试用体验之基于QT图形界面编程操作MySQL数据库
在上一篇使用报告中,介绍了在Nanopi M2上安装Mysql 数据库管理系统的服务器端和客户端软件,并介绍了如何安装Mysql数据库可视化管理软件,以及如何创建数据库、数据库表,通过SQL语句向TUser数据库表插入新数据。
在实际工作或项目开发过程中,我们几乎很少直接在服务器上通过数据库管理软件来对数据库表进行数据的“增加”、“删除”、“修改”和“查询”,通常都是经过一个网页或客户端图形界面软件,通过输入框、列表框等人机交互控件来完成。
QT作为一款开源的软件开发环境、丰富的图形控件,以及快速高效软件界面的设计,在基于桌面和嵌入式类型的Linux操作系统中得到了广泛应用。本篇报告将在上一篇报告的基础上,创建QT工程项目,开发基于QT的MySQL数据库客户端软件,实现一个简单的数据库表查询功能。
1.安装QT
首先第一步,在Nanopi M2上安装QT开发环境,虽然有坛友介绍过一种QT的安装方法,本教程采用另外一种安装方法,一步实现QT4.8,QT5,.3.2,以及QTCreator的安装。
输入命令:sudo apt-get install qt-sdk
如图所示:
20160517_195431.jpg
命令执行结束后,如系统所示,说明QT已在Nanopi M2上安装成功。
20160517_201050.jpg
输入命令:ls /usr/bin/qmake*
输出:qmake qmake-qt4
如图所示:
20160517_201222.jpg
其中qmakeQT5版本,qmake-qt4QT4.8.6版本。
本篇报告主要介绍QT4.8.6的开发环境配置。
在开始——Programming——Qt Creator,启动QT项目开发界面,如图所示:
20160517_201350.jpg
启动界面后,再点击菜单“Tools”,然后选择“Option”菜单项,弹出编译选项设置对话框,如下图所示:
20160517_201733.jpg
在“Buile&Run”设置中,QT Version已经自动识别了QT4.8.6的版本库,我们无需选择,点击Compiler便签,设置gcc编译器,如下图所示:
20160517_202053.jpg
选择kits标签,设置如下:
20160517_202559.jpg
然后点击“OK”按钮,退出编译设置对话框。
2. 安装QT访问MySQL数据库驱动程序
安装好QT后,还无法直接通过QT程序访问MySQL数据库,我们需要安装QT访问MySQL数据库的驱动程序。
对于QT4,输入命令:sudo apt-get install   libqt4-sql-mysql
对于QT5,输入命令:sudo apt-get install libqt5sql5-mysql

3. 创建QT工程
安装、配置好QT的开发环境之后,我们开始创建QT开发MySQL数据库客户端的工程项目,点击如下图所示的红色矩形框,进入启动创建项目命令:
20160517_203233.jpg
选择工程类型QT Widgets application
20160517_203258.jpg
输入工程名称mysqlTest
20160517_203346.jpg
选择开发包类型:
20160517_203411.jpg
选择基于对话框的开发类型QWidget
20160517_203439.jpg
点击“Finish”按钮,完成工程创建:
20160517_203504.jpg
3.编写代码
创建好工程后,在如图的源代码中输入头文件,
QQ图片20160519202719.png
#include<QDebug>
#include<QtSql/QSql>
#include<QtSql/QSqlDatabase>
#include<QtSql/QSqlDriver>
#include<QtSql/QSqlQuery>
#include<QtSql/QSqlQueryModel>
#include<QTableView>
#include<iostream>
Widget构造函数中,输入如下代码:
QSqlDatabase db =QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("testDB");
db.setUserName("root");
db.setPassword("123");
if (!db.open())
   qDebug() << "Failed to connect toroot mysql admin";
else
   std::cout<<"succeed!"<<std::endl;
QSqlQueryModel*model = new QSqlQueryModel;
model->setQuery("select* from TUser");
model->setHeaderData(0,Qt::Horizontal, "id");
model->setHeaderData(1,Qt::Horizontal, "姓名");
model->setHeaderData(2, Qt::Horizontal,"年龄");
QTableView *view = new QTableView(this);
view->resize(400,200);
view->setWindowTitle("QSqlQueryModel");
view->setModel(model);
view->show();
db.close();
如图所示:
QQ图片20160519203250.png
代码编辑结束后,还有一项重要的设置,在工程文件中输入:
QT         +=sql
如图所示:
QQ图片20160519203455.png
4.编译执行
工程项目编辑结束后,点击Run图标执行编译和运行命令,如图所示:
QQ图片20160519203659.png
软件执行结果,如下图所示:
20160517_204332.jpg
列表控件中显示出了我们上一篇通过INSER 语句插入的数据。
5.小结
这篇教程简单介绍了QT的安装、配置,以及QT访问MySQL数据库需要的驱动程序,然后介绍了需要的头文件和C++代码。通过简单的一个小工程,即可实现对MySQL数据库可编程化操作,为后续的项目中的数据管理做了最基础工作,希望能够给大家带来小小的帮助,起到抛砖引玉的效果。

评分

参与人数 1积分 +10 收起 理由
elecfans跑堂 + 10 您的帖子很精彩,期待您分享的下一个帖子!.

查看全部评分

标签:数据库 MySQL

工程师

发表于 2016-5-20 08:26:20  
不错不错呀,正在移植qt。。。
回复

点赞

助理工程师

发表于 2016-5-20 08:44:16    楼主|

PCB在线计价下单

板子大小:

cm
X
cm

层数:

2

板子数量:

10

厚度:

1.6
zhixiaoyuhong 发表于 2016-5-20 08:26
不错不错呀,正在移植qt。。。

这个是在M2本地开发,后续时间允许的话,把QT的移植详细写出来,静待!
回复

点赞

高级工程师

发表于 2016-5-20 14:38:01  
楼主不错哦  最近的报告都很有质量
回复

点赞

助理工程师

发表于 2016-5-20 16:35:36    楼主|
elecfans跑堂 发表于 2016-5-20 14:38
楼主不错哦  最近的报告都很有质量

谢谢,继续努力
回复

点赞

技术员

发表于 2016-6-23 16:51:18  
本帖最后由 辉哥的歌 于 2016-6-23 16:55 编辑

如果我想装 QT5.5.1版本 怎么装? 我直接装这个版本出现了这个错误,难道是因为这个不适合nanoPi的架构,但我装的是Debian系统应该是可以装这个的呀? 11111.JPG
回复

点赞

等待验证会员

发表于 2016-11-11 11:02:57  
谢谢分享!
回复

助理工程师

发表于 2016-12-25 13:05:09    楼主|

谢谢各位的捧场
回复

点赞

高级工程师

发表于 2017-2-5 14:29:27  
感谢楼主无私分享。。。。。
回复

助理工程师

发表于 2017-2-5 18:03:05    楼主|
CHNlyt 发表于 2017-2-5 14:29
感谢楼主无私分享。。。。。

基本上一年前的帖子的了,大家多交流
回复

点赞

高级模式
您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐 上一条 /8 下一条

小黑屋|手机版|Archiver| 电子发烧友 ( 粤ICP备14022951号-2 )  

GMT+8, 2017-8-20 02:49 , Processed in 0.318387 second(s), 20 queries , Memcache On.

微信扫描
快速回复 返回顶部 返回列表
-

推荐专区

技术干货集中营

专家问答

用户帮助┃咨询与建议┃版主议事

我的提问

工程师杂谈

工程师创意

工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

单片机/MCU论坛

FPGA|CPLD|ASIC论坛

DSP论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

-

硬件设计论坛

PCB设计论坛

电路设计论坛

电子元器件论坛

控制|传感

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

仪器仪表技术专区

-

EDA设计论坛

multisim论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

EasyEDA-中国人自已的EDA工具

Orcad论坛

-

综合技术与应用

电机控制

智能电网

光电及显示

参考设计中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

DFRobot专区

树莓派论坛

智能硬件论坛

开发快智能硬件开发平台

Intel物联网开发者专区

Waveshare

乐美客SBC专区

Arduino论坛

BeagleBone论坛

机器人论坛

创客神器NanoPi

小钢炮CANNON

比派科技banana pi专区

-

无线通信论坛

无线通信技术专区

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Mixed Signal/SOC[数模混合芯片设计]

Analog/RF IC设计

设计与制造封装测试

-

个人版区

阿东Verilog技术专版

直流马达驱动电路设计

LabVIEW英雄联盟

特权同学FPGA专区

-

厂商专区

灵动微电子 MM32

盈鹏飞嵌入式

TI论坛

TI Deyisupport社区

芯灵思嵌入式论坛

Tisan

米尔科技

庆科社区

WIZnet技术专区

Cypress技术论坛

飞凌嵌入式

Qualcomm技术论坛

英创嵌入式

机智云GoKit论坛

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

供求信息发布

供需广告

招聘┃求职发布区

电子展览展会专区