2.MySQL数据库的主干接纳和管理

高飞狗:

2.询问所有数据库

  通过命令行登录数据库,输入第一个查看数据库的sql语句

    mysql> show databases;  –默认呈现4个数据库

      +——————–+
      | Database |
      +——————–+
      | information_schema |  –mysql元数据,基础数据
      | mysql
|          –mysql配置数据库,其中含有用户信息(用户名和密码,权限管理)
      | performance_schema
|  –mysql数据库软件的周转数据,日志音讯,性能数据
      | test |           –测试数据库,空数据库
      +——————–+

黛丝:

"看见了吧,与TCP/UDP相比,区别仅仅在于,蓝牙用服务代替端口,用服务UUID代替端口号,且服务UUID较长。"

"用手机App管理嵌入式设备,手机就是客户端,嵌入式设备上的蓝牙模块就是服务器。"

高飞狗:

"真的是一目了然!"

黛丝:

"TCP/UDP标准定义了一组固定的端口对应一组标准化服务。例如,TCP端口80用于Web服务;TCP端口21用于FTP服务。"

"类似地,蓝牙标准也定义了一组固定的服务UUID对应一组标准化服务。"参见下表:

3,创立数据库

    3.1 sql语句为:create database    数据库名称;

    mysql> create database first;  –first为数据库名称

      Query OK, 1 row affected (0.01 sec)

*    *3.2
创立数据库时设置数据库的字符

     mysql> create database
two    –此时不需输入分号,因为分号意味这语句截至,直接回车

        -> default character set
utf8;  –设置默认字符为utf-8
     Query OK, 1 row affected (0.00 sec)

*  *  3.3
查看数据库的默认字符集

*    *mysql> show create database first;
    –first为数据库名称

    +———-+—————————————————————+
    | Database | Create Database |
    +———-+—————————————————————+
    | first | CREATE DATABASE `first` /*!40100 DEFAULT CHARACTER
SET gbk */ |
    +———-+—————————————————————+
    1 row in set (0.00 sec)

*    *3.4 删除数据库

    mysql> drop database two;      –two为数据库名称

    Query OK, 0 rows affected (0.17 sec)

    3.5 修改数据库的默认字符集

    mysql> alter database first default character set utf8;  
  –修改first数据库的字符为utf-8

    Query OK, 1 row affected (0.00 sec)  

图片 1

1.mysql数量存储结构

  1.1由“数据库”——》“表”——》“数据”组成

 
  1.2管制数据库需要采取SQL(结构化查询语言)

    SQL语言分为:

      1 数据查询语言DQL

       遵照指定的咬合、条件表明式或排序检索已存在的数据库中数量,不更改数据库中数量。

       命令:SELECT…FROM…WHERE…

      2 数据操纵语言DML  

       对曾经存在的数据库举行元组的插入、删除、修改等操作

       命令:INSERT、UPDATE、DELETE

      3 数据定义语言DDL  

       
创设、修改或删除数据库中各种对象,包括表、视图、索引等。

        命令:CREATE TABLE , CREATE VIEW, CREATE INDEX、ALTER TABLE ,
                    DROP TABLE , DROP VIEW, DROP INDEX 

      4 数据控制语言DCL

       用来予以或废除访问数据库的某种特权、控制数据操纵事务的发出时间及效果、对数据库举行蹲点

       命令:GRANT、REVOKE、COMMIT、ROLLBACK

“真的吗?你看出来转机来了?我还有机会?”

4.表管理

    4.1选取数据库  

      mysql> use first;  –first为数据库名称
      Database changed

    4.2创建表

      mysql> create table student(    –student为表名称
        -> sid int,           –sid为字段名称
编号,int是字段类型  整形
        -> sname varchar(20),     –sname为字段名称
姓名,varchar(20)是字段类型 字符串长度是20
        -> sage int          –sage为字段名称
年龄,int是字段类型,整形
        -> );
      Query OK, 0 rows affected (0.14 sec)

     4.3翻看所有表

    mysql> show tables;

*      +—————–+
      | Tables_in_first |
      +—————–+
      | student |
      +—————–+
      1 row in set (0.00 sec)*

*     *4.4翻看一张表的表结构

    mysql> desc
student;    –student表名称

      +——-+————-+——+—–+———+——-+
      | Field | Type | Null | Key | Default | Extra |
      +——-+————-+——+—–+———+——-+
      | sid | int(11) | YES | | NULL | |
      | sname | varchar(20) | YES | | NULL | |
      | sage | int(11) | YES | | NULL | |
      +——-+————-+——+—–+———+——-+
      3 rows in set (0.05 sec)

     4.5删除表

    mysql> drop table
student;

      Query OK, 0 rows affected (0.11 sec)

      4.6修改表

    mysql> alter table
student add column sgender
varchar(2);    –向student表中追加一个sgender的字段,column能够概括

      Query OK, 0 rows affected (0.06 sec)
      Records: 0 Duplicates: 0 Warnings: 0

    

      mysql> alter table student drop
sgender;      –删除student表中sgender这一个字段,column能够省略

      Query OK, 0 rows affected (0.06 sec)
      Records: 0 Duplicates: 0 Warnings: 0

      

      mysql> alter table student modify sname
varchar(10);    –修改student表中sname字段的类型为varchar(10)
      Query OK, 0 rows affected (0.08 sec)
      Records: 0 Duplicates: 0 Warnings: 0

      

      mysql> alter table student change sname newsname
varchar(20);    –修改student表中sname字段的称号,变为newsname
      Query OK, 0 rows affected (0.08 sec)
      Records: 0 Duplicates: 0 Warnings: 0

 

“您太谦虚了!”

通信特征

TCP/UDP通信

蓝牙通信

通信模式

客户端-服务器模式

客户端-服务器模式

通信端点

TCP端口

服务

通信端点标识方法

TCP端口号,是16位二进制数

服务UUID,是128位二进制数

客户端通信过程

创建客户端Socket

连接服务器

发送数据

接收数据

创建客户端Socket

连接服务器

发送数据

接收数据

“快请坐,喝点咖啡或者白茶?”

高飞狗:

借助蓝牙SPP服务,实现手机与嵌入式设备之间的通信

注1:本文旨在明晰蓝牙通信原理,仅列出扼要代码,如需完整代码,可联系本人。

注2:确保已开启手机蓝牙

注3:确保蓝牙模块已在手机的已配对设备列表中。

// 取得并保存蓝牙管理器对象

TBluetoothManager *BtManager = TBluetoothManager::Current;

 

// 取得并保存蓝牙适配器对象

BtAdapter = BtManager ->CurrentAdapter;

 

// 取得已配对的蓝牙设备列表

TBluetoothDeviceList *PairedDevices = BtManager ->GetPairedDevices();

 

// 将蓝牙设备列表显示在组合框cbPairedDevices中(代码略)

 

// 获取组合框中被选中的蓝牙设备对象

TBluetoothDevice * SelDevice = PairedDevices ->Items[cbPairedDevices->ItemIndex];

 

// 获取该蓝牙设备的服务列表

TBluetoothServiceList * ListServices = SelDevice->GetServices();

 

// 在服务列表中查询是否支持SPP服务(代码略)

 

// 若支持SPP服务

 

// 用SPP服务UUID创建一个客户端Socket。

TBluetoothSocket *BtSocket = SelDevice ->CreateClientSocket(StringToGUID(SPP_GUI), false);

 

// 用客户端Socket连接蓝牙模块。

BtSocket ->Connect();

 

// 调用客户端Socket的SendData()发送数据给蓝牙模块,蓝牙模块会将收到的数据通过UART转发给嵌入式设备。

BtSocket ->SendData(DataArray); // DataArray是一个数组

 

// 如果嵌入式设备发送数据给蓝牙模块,蓝牙模块会转发给手机,手机会缓存这些数据,App可调用客户端Socket的ReceiveData()接收数据。"

BtSocket->ReceiveData(50); // 接收数据,限时等待50ms

高飞狗:

布鲁托:

黛丝:

高飞狗:

高飞狗:

“哈罗!高飞!心思不错嘛!”

“不用这么客气。黛丝,前些天来又得劳碌你。”

布鲁托:

“通常的想,现在的你…”

高飞狗:

黛丝:

"由于蓝牙服务UUID太长,就用16进制数表达,遵循8-4-4-4-12的方法表示。"

"蓝牙通信与TCP/UDP通信的关键不同在于,蓝牙服务器都有一个SDP服务,也就是服务发现服务,供客户端查询蓝牙服务器能够提供哪些服务。"

"通常,用于嵌入式设备的蓝牙模块都提供Serial Port服务,简称SPP,然后提供一个UART连接嵌入式设备",如下图所示。

“又在探讨怎么高科技项目?”

“在二哥大上自然很容易就招来到自身的蓝牙模块并打响开展了杂交,不过接下去如何支付一个App与PM2.5监测装置通信,我是一头雾水啊!”

高飞狗:

“目前刚刚做了一个像样的品类,正好跟你们说说,对自己来说也算温习所学知识吧。”

“我们这就走吗!”

黛丝:

黛丝:

“我想用C++开发一个手机App,通过蓝牙通信管理自己的PM2.5监测装置,而且以此App必须在Android和iOS上都能运行。”

 

高飞狗:

“什么人啊? 啊哦!是你们两位,快请进!”

布鲁托:

 

“Android Studio开发出来的App无法在iOS上运行。再说,我只会C++语言,而Android Studio要用java语言开发。”

“我固然不知该怎么出手,一点思路都不曾。”

“我们先说蓝牙通信的法则,然后再说具体落实啊。”

“又去找她? 挺不佳意思的。”

“根本算不上什么高科技,我有一个PM2.5监测装置,就是可以测量与记录环境温度、湿度和颗粒物浓度的东东,受应用条件的限制,没有安排呈现屏,为了可以在当场对其举行布置、管理并取得测量数据,想在那个设置上连年一个蓝牙模块,然后借援手机通过蓝牙通信实现那些效用。”

布鲁托:

“蓝牙通信和TCP/UDP的规律基本相同,几乎如出一辙。参见下表。”

 

布鲁托:

布鲁托:

高飞狗和布鲁托再一次赶到黛丝家并按下了门铃,”叮铃铃…叮铃铃…”。

“黛丝研究生是个热心人,乐于助人,上次大家去呼救,她一些作风都尚未,而且她对您的姿态颇为改进,难道你没瞧出来? 没准人家每日盼着您去问问题啊!”

 

“这有什么样难的呦。”

黛丝:

"由此,手机App与嵌入式设备通信的基本流程如下(假设蓝牙模块已经与手机配对完毕):

步骤1:选择要进行通信的蓝牙模块

步骤2:查询蓝牙模块的服务。通常已配对的蓝牙设备的服务列表已缓存在手机里。

步骤3:如果存在SPP服务,恭喜你!

步骤4:用SPP服务UUID创建一个客户端Socket。

步骤5:用客户端Socket连接蓝牙模块。

步骤6:调用客户端Socket的SendData()发送数据给蓝牙模块,蓝牙模块会将收到的数据通过UART转发给嵌入式设备。

步骤7:如果嵌入式设备发送数据给蓝牙模块,蓝牙模块会转发给手机,手机会缓存这些数据,App可调用客户端Socket的ReceiveData()接收数据。"

黛丝:

"蓝牙通信的原理就是这样的。"

高飞狗:

"黛丝,你讲得太明白了,今晚我一定要好好请请你、亲亲你!

黛丝:

"你就知道邪思歪想!"

高飞狗:

"那具体如何实现呢?"

黛丝:

"具体实现方法也很简单。我们只要选择Rad Studio作为开发工具,用C++编写一套源代码就可以生成适用于Android和iOS上运行的App,是不是很酷?"

"有关Rad Studio就不在此累述,GUI界面的设计也很简单,我们聚焦如何通过蓝牙进行数据收发。"

布鲁托:

 

蓝牙服务名称

服务UUID

Serial Port

00001101-0000-1000-8000-00805F9B34FB

LAN Access Using PPP

00001102-0000-1000-8000-00805F9B34FB

DialupNetworking

00001103-0000-1000-8000-00805F9B34FB

OBEXObjectPush

00001105-0000-1000-8000-00805F9B34FB

OBEXFileTransfer

00001106-0000-1000-8000-00805F9B34FB

Cordless Telephony

00001109-0000-1000-8000-00805F9B34FB

Audio Source

0000110A-0000-1000-8000-00805F9B34FB

 

 

“嗨!又碰到难题了,百思不得其解,头昏目眩的,心情糟透了!”

“开发手机App,用Android Studio就足以。”

黛丝:

"以上就是手机App与蓝牙模块间收发数据的基本流程及其实现。"

高飞狗:

"黛丝,你讲得太深入浅出了!啊哦,快到饭点了,我请你吃个便饭,聊表谢意!"

黛丝:

"已经有人约我吃饭了,你们就赶紧回去试验,有什么问题随时Call我。"

黛丝:

布鲁托:

高飞狗:

黛丝:

“蓝牙通信是很成熟的技巧,应该容易解决。”

“大家不妨去找找黛丝学士,听听他有怎么着高见。”

 

“是怎么事呀?”

高飞狗:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图