当前位置: 首页 > news >正文

eqmx上读取数据处理以后添加到数据库中

目录

定义一些静态变量

定时器事件的处理器

订阅数据的执行器

处理json格式数据和将处理好的数据添加到数据库中

要求和最终效果

总结一下


定义一些静态变量
// 在这里都定义成全局的  一般都定义成静态的private static MqttClient mqttClient; // mqtt客户端 private static string mqttServer = "121.37.84.114"; // mqtt服务器地址private static string mqttClientId = "frank_writer"; // 客户端id 随便写private static string SubscribedTopic = "fb5756"; // 订阅主题//连接数据库字符串private static string connectionString = "Data Source=MOGFPLQEEJOTGON\\SQLEXPRESS;Initial Catalog=frank;User ID=frank;Password=root123";//  JObject用来生成一个JSON对象,简单来说就是生成”{}”,//  JArray用来生成一个JSON数组,也就是”[]”,//  JProperty用来生成一个JSON数据,格式为key/value的值,//  而JValue则直接生成一个JSON值private static JObject jsonObject; //private Timer timer;// 添加一个定时器
定时器事件的处理器
 private void File_access_date(object sender, EventArgs e) {//public MqttClient(string brokerHostName, int brokerPort, bool secure, X509Certificate caCert);// 四个参数   服务器ip   端口号   不需要  网络传输证书mqttClient = new MqttClient(mqttServer, 1883, false, null); //  连接服务器// 给客户端订阅数据 添加事件执行器mqttClient.MqttMsgPublishReceived += MqttClient_MqttMsgPublishReceived;// 给mqtt添加事件执行器mqttClient.Connect(mqttClientId); // 添加连接服务的id// 订阅主题,连接质量为2 ,这个两个数组目前就两个参数mqttClient.Subscribe(new string[] { SubscribedTopic }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });}
订阅数据的执行器
​// 事件具体处理器,处理具体读取的数据private static void MqttClient_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e){// Handle the message, e.g., write to SQL 获取json格式的数据string message = System.Text.Encoding.UTF8.GetString(e.Message);
​//MessageBox.Show("Subscribed to " + e.Message); 查看内容WriteToDatabase(message);// 写到数据库里面}
处理json格式数据和将处理好的数据添加到数据库中
 private static void WriteToDatabase(string data){// sql语句string sql = "INSERT INTO FLF800(REG001,REG002,REG003,REG004,REG005,REG006,REG007) VALUES (@REG001,@REG002,@REG003,@REG004,@REG005,@REG006,@REG007) ";string newDate = data.Replace("08", ""); //去掉多余的字符string endDate = newDate.Replace("-","");//去掉'-'字符JObject jsonObject = JObject.Parse(endDate);// 将字符串重新转为JSON格式的数据
​string senserDatas = jsonObject["sensorDatas"].ToString();//获取json数据的第一个元素
​// 转为json数据,转之前数据格式必须是一样的不可以又多余的格式,不然就会报错JArray jsonArray = JArray.Parse(senserDatas); // 将json其转化为数据int sum = jsonArray.Count; // 获取数据的大小Dictionary<string, string> dictionary = new Dictionary<string, string>();// 字典来存储数据// for (int i = 0; sum > 0;i++){jsonObject = jsonArray[i] as JObject;// 将每一个json元素重新转为json对象dictionary.Add(jsonObject["flag"].ToString(), jsonObject["value"].ToString());sum--;}
​//power = JsonConvert.DeserializeObject<PowerData>(endDate);
​using (SqlConnection conn = new SqlConnection(connectionString)){conn.Open();using (SqlCommand cmd = new SqlCommand(sql, conn)){cmd.Parameters.AddWithValue("@REG001", dictionary["REG001"]);cmd.Parameters.AddWithValue("@REG002", dictionary["REG002"]);cmd.Parameters.AddWithValue("@REG003", dictionary["REG003"]);cmd.Parameters.AddWithValue("@REG004", dictionary["REG004"]);cmd.Parameters.AddWithValue("@REG005", dictionary["REG005"]);cmd.Parameters.AddWithValue("@REG006", dictionary["REG0061"]);cmd.Parameters.AddWithValue("@REG007", dictionary["REG0062"]);cmd.ExecuteNonQuery();}}//MessageBox.Show("数据添加成功");}
要求和最终效果

总结一下
        //  JObject用来生成一个JSON对象,简单来说就是生成”{}”,调用静态方法,重新变成json对象JObject jsonObject = JObject.Parse(endDate);// 将字符串重新转为JSON格式的数据string senserDatas = jsonObject["sensorDatas"].ToString();//获取json数据的第一个元素//  JArray用来生成一个JSON数组,也就是”[]”,// 转为json数据,转之前数据格式必须是一样的不可以又多余的格式,不然就会报错JArray jsonArray = JArray.Parse(senserDatas); // 将json其转化为数据int sum = jsonArray.Count; // 获取数据的大小// 这两个没有用到,但在百度上查到了,在这里也提一下 //  JProperty用来生成一个JSON数据,格式为key/value的值,//  而JValue则直接生成一个JSON值

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 华为Ascend C算子开发(中级)考试
  • web网站组成
  • 《华为数据之道》读书笔记六---面向自助消费的数据服务建设
  • powershell自定义命令别名
  • pglogical扩展的基本用法介绍
  • leetcode日记(51)不同路径Ⅱ
  • 数据治理之“财务一张表”
  • python-爬虫实例(1):获取京东商品评论
  • linux-conda环境安装配置教程
  • Angular哪些方法适合写在constructor中?
  • 总结一些vue3小知识3
  • Spring IoC控制反转思想 DI依赖注入(五大注解+一个方法注解)
  • 人工智能与机器学习原理精解【3】
  • 关卡1-2:Python关卡
  • Python练手小项目
  • SegmentFault for Android 3.0 发布
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • CentOS6 编译安装 redis-3.2.3
  • Effective Java 笔记(一)
  • ES6 学习笔记(一)let,const和解构赋值
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • vue.js框架原理浅析
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 对象管理器(defineProperty)学习笔记
  • 服务器从安装到部署全过程(二)
  • 力扣(LeetCode)965
  • 前端相关框架总和
  • 深度学习中的信息论知识详解
  • 用jquery写贪吃蛇
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​2020 年大前端技术趋势解读
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​业务双活的数据切换思路设计(下)
  • "无招胜有招"nbsp;史上最全的互…
  • # Apache SeaTunnel 究竟是什么?
  • # centos7下FFmpeg环境部署记录
  • #pragam once 和 #ifndef 预编译头
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (19)夹钳(用于送货)
  • (编译到47%失败)to be deleted
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)iOS字体
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (自适应手机端)行业协会机构网站模板
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .net 7和core版 SignalR
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET_WebForm_layui控件使用及与webform联合使用
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .net后端程序发布到nignx上,通过nginx访问