将一组变量数据转换为json格式保存到数据库中

解决问题:

在上位机开发中,需要每秒将实时数据插入到数据库中,以便于后期查询历史数据。

例如,上位机每秒从PLC中读取100个变量的实时数据,然后再将这100个变量数据保存到数据库中,如何操作?

第一种方法,数据库中的数据表设计为1+100列,第一列为插入时间,后100列为每个变量的数据。

这种方法,数据表不好维护,如果后期添加删除变量,需要对数据表的结构进行修改。

 

第二种方法,数据表设计为2列,第一列为插入时间,第二列为所有数据的信息。

具体操作方法,将100个数据信息保存成json格式,以字符串的形式保存到数据库中。

实现方法如下:

第一步,设计数据表,将保存json数据列的类型设置为nvarchar(max);

第二步,在NuGet中安装Newtonsoft库;

第三步,使用Newtonsoft将多个数据保存为json字符串;

这一步有两种方法实现,

方法1:建一个ParamValue类,设置100个属性来存放100个变量数据,属性名与变量名相同,如下:

    public class ParamValue
    {
        public string value1 { get; set; }
        public string value2 { get; set; }
        public string value3 { get; set; }
        public string value4 { get; set; }
        public string value5 { get; set; }
        ……
        public string value100 { get; set; }

    }

将ParamValue的实例转成json格式,

string json = JsonConvert.SerializeObject(paramValue);

方法2,使用dictionary<string,float>,字典中的key为变量名,value为变量值,将dictionary<string,float>的实例valueDic转成json字符串

string json = JsonConvert.SerializeObject(valueDic);

这两种方法中,推荐使用方法2,

因为第一,ParamValue的属性需要手动输入,太麻烦,使用dictionary可以根据解析的变量信息自动获取;

第二,如果后期增加或删除变量点,需要修改ParamValue中的属性,虽然可以将ParamValue设置为动态类型,但是不能编译时检查,不友好。

第四步,使用sqlsugar将数据插入到数据库中。(参考sqlsugar使用)

 

posted on 2023-09-09 07:59  hanzq_go  阅读(157)  评论(0编辑  收藏  举报

导航