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值
相关推荐
keep intensify6 分钟前
Redis基础指令全解析:从入门到精通
linux·数据库·c++·redis
曹牧14 分钟前
oracle:To_char
数据库·oracle
DemonAvenger14 分钟前
深入浅出Redis List:从基础到实战,10年经验的后端工程师带你解锁最佳实践
数据库·redis·性能优化
摘星编程25 分钟前
Vector数据库性能大比武:Pinecone、Weaviate、Chroma速度与准确率实测
数据库
曹牧41 分钟前
C#:函数默认参数
开发语言·c#
CodeBlossom42 分钟前
Redis速通
数据库·redis·缓存
牛奶咖啡131 小时前
MySQL InnoDB Cluster 高可用集群部署与应用实践(下)
数据库·mysql·innodb cluster·mysql router·mysql路由的安装部署·mysql路由的测试·mgr组复制
姚远Oracle ACE3 小时前
解读Oracle AWR报告:Global Cache and Enqueue Services - Workload Characteristics
数据库·oracle
流星白龙3 小时前
【Qt】7.信号和槽_connect函数用法(2)
java·数据库·qt
Zzz 小生5 小时前
Claude Code学习笔记(四)-助你快速搭建首个Python项目
大数据·数据库·elasticsearch