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值
相关推荐
小黑技术栈2 分钟前
web前端基础到入门——14day
前端·数据库·oracle
福大大架构师每日一题42 分钟前
agno v2.8.7 发布:顾问模型、精准路线、调度能力全面升级,10项关键修复一次看懂
java·开发语言·数据库
深念Y1 小时前
老Flyme 官方 root 开启 ADB TCP 方案
linux·数据库·网络协议·tcp/ip·adb·智能手机·emmc
c238569 小时前
MySQL 基础用法(上):库表管理与数据增删改
c语言·数据库·c++·mysql
jnrjian10 小时前
postgres database 更换用户
数据库·postgresql
無a伟11 小时前
redis缓存完整详解
数据库·redis·缓存
G311354227312 小时前
大模型不可用时,业务还能不能继续:企业需要设计降级方案
大数据·服务器·数据库·人工智能·深度学习
在世修行12 小时前
从零打造 C# 工业视觉检测系统(八):Modbus RTU 协议解析与 PLC 剔除控制实战
开发语言·c#
VALENIAN瓦伦尼安教学设备13 小时前
激光对中仪采购要点
数据库·嵌入式硬件·算法
码农颜13 小时前
5.2.2 隔离级别
数据库·mysql