• 单机程序的数据处理:Access + DataSet + Linq


          最近熬夜改造了一个小程序,把一个BP神经网络的控制台程序,改造成一个winform程序。本来以为会很简单,结果花了好几天而且竟然还有一个通宵。哎,廉颇老矣。。。

          言归正传。我觉得这里边处理数据的思考值得记录下来,备忘以及分享。作为开始,要回答三个问题,一是要处理的数据源以什么格式输入,二是数据是否会被并发访问,三是数据在应用程序中是否需要缓存。答一:我的这个程序中,将要处理的数据主要是以access数据库形式给出的。这个也可以理解。数据量太大的话只能使用专业的数据库,如Oracle、Microsoft SQL Server、DB2或者MySQL了;数据量太小的话,可以用文本文件、csv文件、Excel文件或者XML文件来存储。对于中等规模的数据,Excel文件和XML都是可选项,但是Acess更是一个不可错过的选项。原因很简单,不论从数据表设计,数据录入、修改,随主程序部署容易程度等等来说,Access都能拔得头筹,前提是你在微软的环境里边(Windows操作系统,Office办公软件,.Net应用程序)。答二:如果数据会被并发访问,那么第三个问题不需要回答了。因为并发访问使得在程序中缓存数据变得危险,数据可能已经被别的用户修改过了。当然这对于单机程序来说应该不是问题。答三:有些情形,缓存所有或者部分数据是完全不需要的。每次需要数据的时候,从数据库(硬盘文件)读取就可以了。但对于那些读取和处理数据比较频繁的应用程序来说,缓存一部分数据才是最划算的。它一次性读取一部分数据,然后接受程序各个部分的查询和修改。对它的修改可以在你需要的任何时候写回数据库;对它的查询可比查询数据库可要经济的多。

         选择了Access数据库,并且决定在程序中缓存数据。那么你的工作量就变得很小,具体的做法如下:

         1、把你设计好的数据库文件加入到工程文件里,你在Access里边创建的数据表会立即被强类型化,即生成相应的Adapter,Table和DataRow;

         2、添加DataSet控件或者定义DataSet变量,并且把刚才加入的数据库作为数据源;

         3、填充DataSet:

    yourAdapter = new yourTableAdapter();
    yourTable = new yourDataTable();
    yourAdapter.Fill(yourTable);

    缓存了数据以后,就可以接受对于数据的查询了。我们确实可以像以前那样逐一检查数据表的数据行来筛选我们需要的数据,但现在我想秀一下使用Linq读取数据的情形:

    IEnumerable<yourRow> rows = from row in yourTable.AsEnumerable()

                                                 where yourCollumnx = “yourvalue”
                                                 select row;
    foreach (yourRow row in rows)
    {
        MessageBox.Show(row.yourCollumn1.ToString());
    }

    是不是很帅?不再需要大段的代码去实现嵌套和遍历了。对于数据的更新就不多说了,没有多少新意,呵呵。

    (应网友要求写了一个Demo附上:Access_DataSet_Linq_Demo.zip,见笑!)

  • 相关阅读:
    centos pptp客户端 连接服务端
    工控上常见的通讯接口与协议
    winform无边框窗体拖动
    Winform实现窗体渐变色
    Win10系统安装
    WIN 10 系统能正常使用WLAN,无法连接以太网
    C#DataGridView分页显示数据
    遍历枚举的值
    C#dataGridView添加自增列
    Winform实现打印功能
  • 原文地址:https://www.cnblogs.com/ceachy/p/Acess_DataSet_Linq.html
Copyright © 2020-2023  润新知