Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >11-物联网开发终端管理篇-java从MQTT获取设备数据,并通过Druid连接池把数据写入MySQL数据库(Windows系统)

11-物联网开发终端管理篇-java从MQTT获取设备数据,并通过Druid连接池把数据写入MySQL数据库(Windows系统)

作者头像
杨奉武
发布于 2022-09-16 06:46:46
发布于 2022-09-16 06:46:46
2.7K0
举报
文章被收录于专栏:知识分享知识分享

<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/iot\_terminal\_management" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

说明

这一节是使用java连接MQTT服务器,然后订阅主题获取所有设备数据,

然后通过Druid连接池把数据写入MySQL数据库.

注: java连接MQTT和Android连接MQTT是一样的.

java使用Druid连接池连接数据库可参考提供的MySQL基础开源教程.

java代码使用IntelliJ IDEA软件打开.

新建数据库和表格

1,新建数据库

2,数据库名字 historical_data,编码格式 utf8

3,在historical_data数据库里新建表格

4,添加几个字段

字段id,  类型是int, 去掉允许空值, 设置为自增,  然后设置为主键;

字段data_time,  类型设置为timestamp;(作为数据存储的时间)

字段client_id,  类型设置为varchar;(记录设备的id)

字段temperature,  类型设置为float;(存温度数据)

字段humidity,  类型设置为float;(存湿度数据)

5,点击保存 表格名字为 humiture_table

可以打开表看下,现在是没有数据

创建一个测试用户

1,说明

咱现在的数据库只能使用root账号在本机进行访问,

咱新建一个用户,让其可以在其它电脑上访问咱这个数据库

2,点击用户, 点击新建用户

3,用户名密码随意,主机那里填写 % (代表所有IP地址皆可访问)

4,点击权限, 点击添加权限

只选择historical_data这个数据库, 然后后面只选择上增删改查,刷新就可以了

注意哈,为了数据库的安全,一般数据库不能对外开放,咱测试的时候可以这样子.

 然后点击保存

5,在别的电脑上访问试一试

进来了

测试

1,使用IntelliJ IDEA 打开这节的工程

2,源码需要使用JDK1.8及其以上版本

如果版本小于1.8则需要安装(只需要安装,不需要配置环境变量)

安装完以后不需要配置环境变量,只需要在软件中设置JDK路径

2,修改为自己的数据库信息和MQTT服务器信息

3,根据自己的设备数据修改解析格式

如果设备的数据格式和我的不一样,用户根据自己的数据格式修改

我的设备上报数据的格式是 {"data":"sensor","type":"th","temperature":45,"humidity":23}

4,启动

5,可以在控制台看到监控的所有设备的数据

6,打开数据库表格

生成可执行jar包, 并安装运行到服务器

1,停止运行

2,因为程序已经设置过生成jar包,所以用户直接按照下面操作即可生成可执行jar包.

3,补充一下实际生成jar包的流程(用户不需要操作)

4,生成的jar包的位置

5,如果服务器没有安装JDK,请用户先安装JDK

如果已经安装了别的JDK版本,这个版本的可以只安装,不配置环境变量,

后面有说明怎么指定JDK运行. 记得往后看哈!

https://cloud.tencent.com/developer/article/1397720

6,把先前生成的jar包拷贝到服务器

7,打开命令窗口 cmd

8,进入到jar包目录

9,执行 java -jar MqttDataToMySQL.jar

10,打印所有设备的数据,说明已经运行起来了

让程序在后台运行

1,关闭

2,注意呀!不要犯常识性错误!把文件扩展名选中!

3,在jar包目录新建一个后缀名字为.bat的文件

编辑里面的内容如下(MqttDataToMySQL.jar 就是jar包的名字)

@echo off

start javaw -jar MqttDataToMySQL.jar

exit

4,双击运行即可

5,如果要关闭,找到任务管理器java运行进程,关闭即可

6,也可以指定JDK路径运行

C:\java8\jdk1.8.0.131  为JDK的安装路径

@echo off

set JAVA_HOME=C:\java8\jdk1.8.0.131

set CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOMe%\lib\tools.jar;

set Path=%JAVA_HOME%\bin;

start javaw -jar MqttDataToMySQL.jar

exit

程序说明

1.整个源码就两部分,MQTT和数据库

MQTT使用的是paho.client.mattv3-1.2.0的jar包

数据库除了基本的jabc连接器以外,使用了阿里巴巴的开源连接池 druid

2.初始化连接池和连接MQTT

3.连接池配置

4.连接MQTT,订阅主题

5.获取MQTT数据,从连接池获取链接对象,把数据写到数据库

注意事项1

1,正常情况下java软件也是放到服务器上的, 所以MQTT连接地址应该写为

tcp://localhost:1883

2,使用 localhost 连接MQTT服务器, 获取MQTT设备的所有数据可以直接订阅

3,同样的数据库连接地址也改为localhost , 数据库用户名和密码应该改为 root 的

修改完成以后,重新生成jar包,然后放到服务器上即可

注意事项2

常理来讲测试完毕之后需要禁止使用navicat 来访问数据库

可以把测试账号设置为本机访问

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
11-物联网开发终端管理篇-java从MQTT获取设备数据,并通过Druid连接池把数据写入MySQL数据库(Linux系统,宝塔)
我的设备上报数据的格式是 {"data":"sensor","type":"th","temperature":45,"humidity":23}
杨奉武
2022/09/19
3.1K2
11-物联网开发终端管理篇-java从MQTT获取设备数据,并通过Druid连接池把数据写入MySQL数据库(Linux系统,宝塔)
12-物联网开发终端管理篇-java使用Druid连接池获取MySQL数据库数据,并通过MQTT发送(Windows系统)
说明 上节是通过MQTT接收数据并写到数据库, 这节是java使用Druid连接池获取MySQL数据库数据,并通过MQTT发送 测试 1,使用IntelliJ IDEA 打开这节的工程 2,源码需要使用JDK1.8及其以上版本 如果版本小于1.8则需要安装(只需要安装,不需要配置环境变量) 安装完以后不需要配置环境变量,只需要在软件中设置JDK路径 3,先启动看下效果(默认连接我的数据库和MQTT) 4,打开MQTT调试助手 发布的主题:historical/request
杨奉武
2022/09/28
1.3K0
12-物联网开发终端管理篇-java使用Druid连接池获取MySQL数据库数据,并通过MQTT发送(Windows系统)
02-STM32+ESP8266+AIR202/302终端管理篇-把设备温湿度数据存储到MySQL数据库(Windows)
<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K_C/" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
杨奉武
2020/12/07
9661
02-STM32+ESP8266+AIR202/302终端管理篇-把设备温湿度数据存储到MySQL数据库(Windows)
12-物联网开发终端管理篇-java使用Druid连接池获取MySQL数据库数据,并通过MQTT发送(linux,宝塔)
说明 这节是java使用Druid连接池查询MySQL数据库数据,并通过MQTT发送 测试 1,使用IntelliJ IDEA 打开这节的工程 2,源码需要使用JDK1.8及其以上版本 如果版本小于1.8则需要安装(只需要安装,不需要配置环境变量) 安装完以后不需要配置环境变量,只需要在软件中设置JDK路径 3,先启动看下效果(默认连接我的数据库和MQTT) 4,打开MQTT调试助手 发布的主题:historical/request/863488051205014 订阅的主
杨奉武
2022/09/28
1.5K0
12-物联网开发终端管理篇-java使用Druid连接池获取MySQL数据库数据,并通过MQTT发送(linux,宝塔)
02-STM32+ESP8266+AIR202/302终端管理篇-把设备温湿度数据存储到MySQL数据库(Linux)
<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K_C/" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
杨奉武
2020/12/07
1K0
02-STM32+ESP8266+AIR202/302终端管理篇-把设备温湿度数据存储到MySQL数据库(Linux)
【JDBC】数据库连接池:德鲁伊druid的使用
(点击进入专栏) 【1】idea添加mysql-jar包 【2】使用IDEA连接数据库,执行增删改操作。 【3】IDEA连接数据库,执行查询操作,返回结果集并输出。 【4】JDBC实战 水果库存系统 [设计阶段] 【5】 水果库存系统 [功能实现①](接口实现类FruitDAOImpl) 【6】 水果库存系统 [功能实现②] 功能完善+使用效果 【7】 水果库存系统 [代码优化] 【8】连接数据库,执行批处理操作。 【9】数据库连接池:德鲁伊druid的使用
.29.
2022/11/15
2K0
【JDBC】数据库连接池:德鲁伊druid的使用
java数据库连接池有哪些_常用的数据库连接池
池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销。这里所说的池是一种广义上的池,比如数据库连接池、线程池、内存池、对象池等。其中,对象池可以看成保存对象的容器,在进程初始化时创建一定数量的对象。需要时直接从池中取出一个空闲对象,用完后并不直接释放掉对象,而是再放到对象池中以方便下一次对象请求可以直接复用。其他几种池的设计思想也是如此,池技术的优势是,可以消除对象创建所带来的延迟,从而提高系统的性能。
全栈程序员站长
2022/09/30
2.1K0
java数据库连接池有哪些_常用的数据库连接池
数据库连接池
数据库连接对象是有限资源,所以数据库连接池是用于负责分配、管理和释放数据库连接对象,它允许应用程序重复使用一个现有的数据库连接对象,而不是再重新建立一个;这一点实际上和线程池的概念差不多。数据库连接池会释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏,这项技术能明显提高对数据库操作的性能。
端碗吹水
2020/09/23
1.5K0
数据库连接池
Driud数据库连接池的使用
上面是比较官方的介绍,解释起来还是蛮简单的,就是构建起一个池子,然后把经常需要用的对象放到里面,然后每次调用的时候,就直接取出来就可以了,不需要再次new一个,这样可以节约很多时间。
GeekLiHua
2025/01/21
1430
Driud数据库连接池的使用
java JDBC数据库连接池技术(Druid ,c3p0)
这个原因与为什么使用线程池有点相似,都是为了提高资源的利用率,减少申请时间的浪费,提高程序的运行效率。 数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数 据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统 无尽的与数据库连接。
一只胡说八道的猴子
2020/09/27
7760
java JDBC数据库连接池技术(Druid ,c3p0)
delphi 数据库连接池-MySQL之数据库连接池(Druid)
  行一次操作就把连接关闭,而数据库创建连接通常需要消耗相对较多的资源。这样数据库连接对象的使用率低。
宜轩
2022/12/29
3.1K0
5-数据库连接池
如果Connection对象是从连接池中直接获取的,则调用Connection的close方法不再关闭连接,而是将该连接归还给连接池
Ywrby
2022/10/27
2990
Java连接MySQL数据库的超级详细步骤(Windows)[通俗易懂]
1. 下载JDK 下载Java开发工具包JDK,下载地址:https://www.oracle.com/java/technologies/javase-jdk14-downloads.html,下载待用。
全栈程序员站长
2022/09/13
3.7K0
Java连接MySQL数据库的超级详细步骤(Windows)[通俗易懂]
Java学习之数据库连接池
前面用到的jdbc,在每次连接数据库的时候都需要去重新建立对象。我们在这里会用到创建一个连接池,每次使用完后归还给连接池。
全栈程序员站长
2022/07/13
4150
JAVA保姆式JDBC数据库免费教程之02-连接池技术
缺点:用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出。 连接池技术的核心思想是:连接复用,通过建立一个数据库连接池以及一套连接使用、分配、管理策略,使得该连接池中的连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。
张哥编程
2024/12/13
1440
JAVA保姆式JDBC数据库免费教程之02-连接池技术
22-物联网开发终端管理篇-PHP使用PDO方式连接MySQL数据库,并对外提供GET,POST接口获取数据库数据(linux系统,宝塔)
现在数据库里面已经存储了设备的数据了,获取某个设备某个时间段的历史数据格式规定如下:
杨奉武
2022/09/20
8800
22-物联网开发终端管理篇-PHP使用PDO方式连接MySQL数据库,并对外提供GET,POST接口获取数据库数据(linux系统,宝塔)
delphi 数据库连接池-c3p0,DBCP,Druid(德鲁伊)数据库连接池
  普通的 JDBC 数据库连接使用 来获取到连接的,每次向数据库请求建立连接的时候,都要将 加载到内存中,再验证用户名和密码(需要花费0.05s ~ 1s的时间 ) 。需要数据库连接的时候,就向数据库要求一个,执行完成后再断开连接,这样的方式,将会消耗大量的资源和时间。数据库的连接资源并没有得到一个很好的重复利用 ,如果同时有 几百人甚至 几千人 在线,频繁的进行数据库连接操作将占用很多的系统资源,严重的甚至会造成服务器的崩溃。本博客后面会作相应的演示,请大家继续往后看下去。对于每一次数据库连接,使用完后都得断开。否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄漏,最终将导致重启数据库。 何为Java的内存泄漏这种开发不能控制被创建的连接对象数,不能很好的管理连接的资源信息,系统资源会被毫无顾忌的分配出去,如连接过多,也可能导致内存泄漏,服务器崩溃。 1.2 JDBC 连接数据库
宜轩
2022/12/29
8330
JDBC:【第三篇:数据库数据库连接池 & JDBCTemplate】
简单理解:就是一个存放数据库连接的容器,当用户需要访问数据库的时候,容器提供连接对象给用户用,之后用户将连接对象归还给容器
BWH_Steven
2019/08/09
1.6K0
Java——数据库编程JDBC之数据库连接池技术(C3P0与Druid,提供了Druid的工具类)
上篇博文中讲解的JDBC,程序中每次都要获取数据库连接,使用完毕后直接释放资源,实际上这种在实际应用中是不可取的,因为效率很低,所以,本文来总结下数据库连接池技术。
Winter_world
2020/09/25
1K0
Java——数据库编程JDBC之数据库连接池技术(C3P0与Druid,提供了Druid的工具类)
【Java 进阶篇】JDBC数据库连接池Druid工具类详解
在Java应用程序中,数据库连接是一种重要的资源,因为每次创建和销毁数据库连接都会产生开销,降低了系统性能。为了高效地管理数据库连接,降低资源消耗,常常使用数据库连接池。Druid是一个功能强大的数据库连接池,本文将详细介绍如何使用Druid连接池及其工具类。
繁依Fanyi
2023/10/12
1.3K0
【Java 进阶篇】JDBC数据库连接池Druid工具类详解
推荐阅读
11-物联网开发终端管理篇-java从MQTT获取设备数据,并通过Druid连接池把数据写入MySQL数据库(Linux系统,宝塔)
3.1K2
12-物联网开发终端管理篇-java使用Druid连接池获取MySQL数据库数据,并通过MQTT发送(Windows系统)
1.3K0
02-STM32+ESP8266+AIR202/302终端管理篇-把设备温湿度数据存储到MySQL数据库(Windows)
9661
12-物联网开发终端管理篇-java使用Druid连接池获取MySQL数据库数据,并通过MQTT发送(linux,宝塔)
1.5K0
02-STM32+ESP8266+AIR202/302终端管理篇-把设备温湿度数据存储到MySQL数据库(Linux)
1K0
【JDBC】数据库连接池:德鲁伊druid的使用
2K0
java数据库连接池有哪些_常用的数据库连接池
2.1K0
数据库连接池
1.5K0
Driud数据库连接池的使用
1430
java JDBC数据库连接池技术(Druid ,c3p0)
7760
delphi 数据库连接池-MySQL之数据库连接池(Druid)
3.1K0
5-数据库连接池
2990
Java连接MySQL数据库的超级详细步骤(Windows)[通俗易懂]
3.7K0
Java学习之数据库连接池
4150
JAVA保姆式JDBC数据库免费教程之02-连接池技术
1440
22-物联网开发终端管理篇-PHP使用PDO方式连接MySQL数据库,并对外提供GET,POST接口获取数据库数据(linux系统,宝塔)
8800
delphi 数据库连接池-c3p0,DBCP,Druid(德鲁伊)数据库连接池
8330
JDBC:【第三篇:数据库数据库连接池 & JDBCTemplate】
1.6K0
Java——数据库编程JDBC之数据库连接池技术(C3P0与Druid,提供了Druid的工具类)
1K0
【Java 进阶篇】JDBC数据库连接池Druid工具类详解
1.3K0
相关推荐
11-物联网开发终端管理篇-java从MQTT获取设备数据,并通过Druid连接池把数据写入MySQL数据库(Linux系统,宝塔)
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档