博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单机程序的数据处理:Access + DataSet + Linq
阅读量:6907 次
发布时间:2019-06-27

本文共 1326 字,大约阅读时间需要 4 分钟。

      最近熬夜改造了一个小程序,把一个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附上:,见笑!)

转载地址:http://bdfcl.baihongyu.com/

你可能感兴趣的文章
GNU M4 - GNU Project - 免费软件基金会(FSF)
查看>>
OCP-1Z0-051-名称解析-文章7称号
查看>>
keepalived双BACKUP加nopreempt失效、手动监控服务脚步。
查看>>
form表单回车提交问题,JS监听回车事件
查看>>
ubuntu12.04 修改登陆用户 为root
查看>>
silverlight开发实例(Prism+MVVM+RIA)(二)--创建shell及用户登录
查看>>
jsp中将后台传递过来的json格式的list数据绑定到下拉菜单select
查看>>
Project Euler 85 :Counting rectangles 数长方形
查看>>
MYSQL查询某字段中以逗号分隔的字符串的方法
查看>>
Excel设置下拉菜单并隐藏下拉菜单来源单元格内容
查看>>
Java8初体验(二)Stream语法详解
查看>>
微服务架构——不是免费的午餐
查看>>
基于HTML5的Web SCADA工控移动应用
查看>>
VS 2015相当不错的功能:C#交互窗口
查看>>
hive复杂类型与java类型的对应
查看>>
[Ubuntu] ubuntu10.04系统维护之Wine的安装
查看>>
iOS获取UIView上某点的颜色值
查看>>
cocos2d-x 3.0 android mk文件 之 自己主动遍历*.cpp文件
查看>>
python数字图像处理(7):图像的形变与缩放
查看>>
设计模式-观察者模式(上)<转>
查看>>