写了一个数据采集系统软件,后台数据库采用ACCESS,数据库中有4个表,第一个表保存最近两天每10秒产生的数据,第二个表保存最近七天每分钟产生的数据,第三个表保存最近30天每10分钟产生的数据,第四个表每天保存一个数据。为了实现这样的动态保存数据,就需要每天对数据库中数据进行增删操作,反复的增删操作,加大了数据库容量。
请问是否有更好的解决办法来存储这些数据,避免反复的增删操作加大数据库容量的问题。
我的做法是:一个数据库中存4个表,分别存储这四类数据。每到新的一天,就删除数据表中多余的数据。这样日积月累,数据库的容量明显增大。
请各位指点下,是否有更好的设计思路,来解决数据库保存数据加大了数据库容量的问题。

解决方案 »

  1.   

    ACCESS 明显就有这问题,而且你程序还一直开着,还不能压缩
    要么换数据库,要么按2楼的做(不过内存吃得大)
      

  2.   

    改用了SQL SERVER ,但是查询24小时内的数据时,SQL语句不对。
    我是这样写的:txtsql = "select  * from  tbvalue1 where num=" & n & " and cdate(valueDate+ValueTime) between # " & Format(Trim(Text1.Text), "yyyy/mm/dd") & " " & Format(Trim(Text3.Text), "hh:mm:ss") & "# and #" & Format(Trim(Text2.Text), "yyyy/mm/dd") & " " & Format(Trim(Text4.Text), "hh:mm:ss") & "# order by valueDate,valueTime"""这个是ACCESS数据库的查询,在SQL SERVER数据库中应该怎样改写呢??
      

  3.   

     '在工程中引用ADO Ext.2.8 DLL,压缩数据库代码如下.  Dim j As New JRO.JetEngine
                 '创建压缩临时数据库到另一目录
                 j.CompactDatabase "provider=Microsoft.Jet.OLEDB.4.0;data " & _
                                   "source='" + datapath + "\" + dataname + "';" & _
                                    "jet oledb:database password=shensoft", _
                                  "provider=Microsoft.Jet.OLEDB.4.0;data " & _
                                    "source=c:\data.tmp;" & _
                                    "jet oledb:encrypt database=true;" & _
                                    "jet oledb:database password=shensoft"
             
                  '删除原来的数据库
                  Kill datapath + "\" + dataname + ""
                  '将压缩后的数据库复制回原来位置
                  FileCopy "c:\data.tmp", datapath + "\" + dataname + ""
                  '删除临时数据库
                  Kill "c:\data.tmp"
                  Set j = Nothing
      

  4.   

    cdate(valueDate+ValueTime)这个语句似乎也不能识别,数据表中字段ValueDate存放日期,ValueTime存放时间,想查询24小时内的数据,该怎么修改呢??