当前位置: 代码迷 >> C# >> C# 写数据库出现的奇异现象
  详细解决方案

C# 写数据库出现的奇异现象

热度:88   发布时间:2016-05-05 04:57:41.0
C# 写数据库出现的怪异现象
写的是一个小监测系统。软件从多个串口读取数据,然后进行判断,最后写入数据库。
--------------------------------------分割线--------------------------------------------------------
我的处理方式是:
首先在内存中创建一个空的dataset,并在dataset中创建多个表,每个表用于存放一个串口接收的数据。
如果接收的是第一帧数据,便将数据直接存在dataset.datatable中,然后接收第二帧数据
然后将接收上来的第二帧数据和前一帧数据进行比较,如果接收数据一样,更新时间,否则,将前第一帧数据写入数据库
并将第二帧数据作为第一帧数据,依次循环处理。
-------------------------------------怪异现象-----------------------------------------------------
每次软件关闭重启之后,软件便将数据重新写入了一遍。是什么意思呢?
比如我前一次,写入了5行数据。现在关闭软件,并重新打开时,数据库中便有了10行数据,后5行数据和前5行数据一摸一样。
一直找不到原因。
我在想是不是如果将数据存放在内存中,便会一直存在于内存中,软件关闭也会存在。
同时当判断接收的数据和前一帧相同时,怎么将内存中的数据清除。
------解决思路----------------------
引用:
Quote: 引用:

串口数据的格式和串口数据,这本来就是风马牛不相及的两个东西
你放到一个表里存储,等查询的时候也会是个麻烦事,还要代码判断把同一个表里两种完全不相干的数据分开显示


串口协议时写死的,但是对于0、1代码你始终要把它翻译成用户能识别的代码。比如串口发送的数据第一个字节的第一位代表设备状态的正常与故障。所以定义表时,第一列定义为设备状态,后面以此定义·········
到时候对于接受上的数据直接写到表对应的列

你应该做个码表,插入的是0和1,查询出来之后2个表联合查询一下,把0和1转变成字符串显示
  相关解决方案