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

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

时间:2024-07-27 17:29:02浏览次数:13  
标签:读取数据 dictionary 数据库 cmd JSON private json eqmx string

目录

定义一些静态变量

定时器事件的处理器

订阅数据的执行器

处理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值

标签:读取数据,dictionary,数据库,cmd,JSON,private,json,eqmx,string
From: https://blog.csdn.net/weixin_42376775/article/details/140681730

相关文章

  • Python毕业设计基于Django的网上购物销售系统(代码+数据库+文档LW+运行成功)
    文末获取资源,收藏关注不迷路文章目录一、项目介绍二、主要使用技术三、研究内容四、核心代码五、文章目录一、项目介绍随着互联网技术的不断发展和普及,电子商务行业迅速崛起。越来越多的消费者选择在线购物,享受便捷、快速的购物体验。因此,开发一款基于Python的购物......
  • 架构师手写代码:分享数据库原子性与一致性实现方案(不再背概念)
    数据库事务的原子性和一致性是数据库管理系统(DBMS)中确保数据完整性和可靠性的两个关键属性。下面是这两个属性的基本概念和实现逻辑:肖哥弹架构跟大家“弹弹”数据库设计技巧,需要代码关注欢迎点赞,点赞,点赞。关注公号Solomon肖哥弹架构获取更多精彩内容历史热点文章......
  • 如何从HANA数据库读取ODQDATA blob字段?
    如何使用gzipbasXml作为python格式反编译SAPERP中的blob字段?就我而言,我想从ODQDATA表中读取字段“xdata”。我尝试使用gzip和zlib解压该对象,但没有成功(BadGzipFile:不是gzip压缩文件)。我自己也没有更多的想法了。importzlibimportgzipi......
  • 【HTML+CSS】使用HTML与后端技术连接数据库
    目录一、概述1.1HTML前端1.2后端技术1.3数据库二、HTML表单示例三、PHP后端示例3.1连接数据库3.2接收数据并插入数据库四、安全性4.1防止SQL注入4.2数据验证与清洗五、优化5.1索引优化5.2查询优化六、现代Web开发中的最佳实践6.1使用ORM(对象关系映射......
  • SQL数据库表 多对多关系设计--省去链表的尝试
     概述 之前遇到一个MES需求,需要创建一个基础资料表"人员信息表",用于其它业务的人员信息关连,因为这些人员并非系统登录帐号,所以单独进行维护。人员表涉及到字段包括:ID,工号,姓名,所属工序,所属职称,所属车间。其中,所属工序、所属职称、所属车间为多选。例:一位人员,比如"班长......
  • redis的使用场景-热点数据缓存(把经常访问的数据放入缓存减少数据库压力)
    一、使用redis实现(不推荐,会增加业务代码维护)@ServicepublicclassClazzServiceImplimplementsClazzService{@AutowiredprivateClazzDaoclazzDao; //注入mapper@AutowiredprivateRedisTemplate<String,Object>redisTemplate; //调用redis使用@Overridep......
  • java多线程把数据迁移到不同数据库中
    publicvoidsync_table_test_thread()throwsSQLException,InterruptedException{    longstart=System.currentTimeMillis();    SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");    //获取要迁移oracle表数据库......
  • python和mysql数据库
    pyhton和mysql数据库1.非查询:frompymysqlimportConnection#导入数据库模块pymysql以及Connection对象conn=Connection(#连接数据库  host='127.0.0.1',#ip地址或者是主机名  port=3306,#端口号  user='root',  password='20040130', ) cursor=c......
  • MySQL索引、事务(数据库管理与高可用)
    一、索引的概念索引:排序的列表,对数据进行快速的查询;针对不同的产品需求,或者不同的数据库结构,会创建不同的索引;1:普通索引(默认索引)2:唯一索引(可以多个)3:主键索引(只能一个)4:组合索引(最左查询)5:全文索引oracle:B树索引将表一份为二进行查询;701--3536--701--1718--35先把......
  • 用户管理与高级SQL语句(数据库管理与高可用)
    1.表(Table)数据库中的表与我们日常生活中使用的表格类似,它也是由行(Row)和列(Column)组成的。列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名。行包括了若干列信息项。一行数据称为一个或一条记录,它表达有一定意义的信息组合。一个数据库表由一条或多条记录组成,没有......