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值
相关推荐
时差95315 分钟前
【面试题】Hive 查询:如何查找用户连续三天登录的记录
大数据·数据库·hive·sql·面试·database
让学习成为一种生活方式17 分钟前
R包下载太慢安装中止的解决策略-R语言003
java·数据库·r语言
秋意钟44 分钟前
MySQL日期类型选择建议
数据库·mysql
Dxy12393102161 小时前
python下载pdf
数据库·python·pdf
IT技术分享社区2 小时前
C#实战:使用腾讯云识别服务轻松提取火车票信息
开发语言·c#·云计算·腾讯云·共识算法
桀桀桀桀桀桀2 小时前
数据库中的用户管理和权限管理
数据库·mysql
superman超哥3 小时前
04 深入 Oracle 并发世界:MVCC、锁、闩锁、事务隔离与并发性能优化的探索
数据库·oracle·性能优化·dba
用户8007165452003 小时前
HTAP数据库国产化改造技术可行性方案分析
数据库
engchina4 小时前
Neo4j 和 Python 初学者指南:如何使用可选关系匹配优化 Cypher 查询
数据库·python·neo4j
engchina4 小时前
使用 Cypher 查询语言在 Neo4j 中查找最短路径
数据库·neo4j