150 福建 电脑 2011年第1期 使用强类型DataSet简化ASP.NET程序开发 李炳练 (珠海城市职业技术学院广东珠海519090) 【摘 要】:本文针对弱类型DataSet运行性能差、开发效率低下、易错且调试困难等问题.探讨了强类 型DataSet的特点与优势,并应用于ASP.NET程序开发中,以实现程序的高效运行与项目的快速开发。 【关键词】:强类型数据集;弱类型数据集;快速开发;ASP.NET程序设计 0、引言 面的例子中.我们可以改用强类型DataRow来获取 ADO.NET数据存取对象的设计是为了实现最大的 job—desc的值: 灵活性,因此,从数据库读取数据时.所获取的数据都 string myjob=ds.jobs[0].job_desc; 是未经类型化的对象 我们把这类数据简称为弱类型 这样设计的优点是非常明显的.已经不会出现杂 数据。由这些数据填充的数据集称为弱类型DataSet 乱的列名,job desc属性也已明确为字符串类型,避免 弱类型数据运行性能低下、开发速度慢、易错且不易调 了杂乱的对象类型转换问题 程序在编译时.编译器为 试等缺点一直困扰着程序设计人员 本文所探讨的是 我们作类型检查,使得我们可以继续进行其它任务而 相对于弱类型化的数据存取技术存在的问题.分析了 不必担心是否已经正确输入了列名。此外.强类型数据 强类型DataSet(也称类型化DataSct)在开发中优越性. 集还可以借助Visual Studi0智能感知查找表或字段的 并且借助于Visual Studio 2008.创建和使用强类型 名称。强类型DataSet所提供的设计时和编译时支持不 DataSet简化ASP.NET程序设计.提升开发效率与应用 但可以大大地减少启动开发时间.而且可以减少调试 程序质量。 和稳定应用程序所需的时间 1、强类型DataSet基础及优点 2、在VS 2008中创建强类型DataSet 使用ADO.NET检索数据库所填充的弱类型 强类型DataSet的概念并不陌生.在.NET 1.1下已 DataSet所存在的最大问题是无论何时从DataSet中检 经可以使用强类型数据集.但在visual Studio 2003里 索的值都以System.Object的形式返回.在程序中使用 开发起来还是有一些不方便.在Visual Studio 2005里 该数据时还需要把它转换为对应的类型.这就造成应 对DataSet的设计视图做了很大的改进.因为ADO. 用程序性能的极大损失.更为糟糕的是取出DataSet列 NET 2.0增加了TableAdapter对象.所以现在也可以在 值需要使用该列集合中的列的索引.导致了即使程序 DataSet设计视图里添加DataTable的表适配器圜。 出错也能通过编译而在运行时报错.给程序调试带来 强类型DataSet是从XML架构生成的[31。而与其 极大的不便。增加了应用程序的不稳定因素。例如,我 相对的弱类型DataSet是指没有任何相关XML架构的 们需要从弱类型DataSet中获取iobs数据表job_desc DataSet。Visual Studio.NET提供了一个拖放工具,该 列数据;其实现为: 工具可以自动创建该架构并生成类型化DataSet类它 String myjob=ds.Tables【I.jobs”】.Rows【”job_desc”]. 利用visual Studio基于数据库schema自动生成的一 ToString0; 个类.其成员的类型都是由数据库schema决定的,实 可以发现.必须以一个串形式作为要查询的列名 行强类型约束。创建强类型DataSet也较为简单,首先 来存取这个值f或者,使用这个列集合中的列的索引 新建立一个Web网站项目,执行『解决方案资源管理 值)。假定FimtName列的基本数据类型是字符串,但是 器】-÷【添加新项】— 数据集】,命名为Jobss.xsd;再从【服 必须显式地把它转化成一个字符串以便使用它。如果 务器资源管理器1 『选择pubs数据库中的jobs表1一十 列名发生变化(例如,把它改为myjob_desc),编译器是 拖入要生成数据集的数据表到设计界面即可完成强类 不会报错的。程序只有在运行的时候才报错。 型DataSet的创建。Jobs数据表结构如表1。 强类型DataSet正是为了解决上述问题而设计的。 强类型的数据集由一组从DataSet、DataTable以及 所谓”强类型”通常指的是程序中表达的任何对象所从 DataRow继承的特殊类组成[41。可以通过数据集设计器 属的类型都必须能在编译时确定[1]。强类型DataSet突 生成该数据表的增、删、改、查方法以实现数据操作。在 出的特点是将数据行和列作为对象的属性公开.而不 生成好的数据表[jobsTableAdapter]右键_+添加查询.可 是作为集合中的项公开。可以通过强类型的属性名称 选择通过”使用SQL语句”、”创建新的存储过程”、”使 而不是基于字段查找的方式访问表和字段的值.在上 用现有的存储过程”三种方式生成Delete(),Insert(), 2011年第1期 福建 电脑 151 Update()、Select(J ̄回行)以及Select(J ̄回数据统计) jobsTableAdapter jt=new jobsTableAdapter0; 方法。到此,基于强类型DataSet的数据访问层建立完 WebApplication1.DataSet1.jobsDataTable jd=ja.GetData0; 毕。 jd[O].job_desc=”更新第一行job_desc值lI: jt.Update(jd); 字段名称 数据类型 字段大小 //实现数据删除 jobsTableAdapter jt=new jobsTableAdapter0; job—id smallint jt.Delete(15);ff戳除id号为15的一行数据 job desc varchar 50 通过以上使用强类型DataSet实现数据的增、删、 改、查的分析.我们不难发现.在VS 2008中创建强类 arin lvl tinyint 1 型DataSet的功能为简化ASP.NET开发提供了飞跃性 tllax 1vl tmvint 1 的改变 4、结束语 表1 jobs数据表结构 强类型DataSet弥补了弱类型DataSet在程序执行 3、使用强类型DataSet简化ASP.NET开发 效率低、易错且调试困难、开发速度慢等缺点,把程序 完成强类型Dataset的创建工作之后.就可以在具 员从为编写数据的增加、更新、修改、删除等功能而不 体的页面中使用它了 可以通过0bjectDataSonrce控件 得不面对枯燥的代码与大量重复的工作中解脱出来. 链接强类型Dataset.再把获取的数据绑定到GridVieW 从而专注于业务逻辑的设计与实现.这极大地简化了 数据控件上即可实现对数据的操作 ASP.NET程序开发。在ASP.NET项目开发中使用强类 在项目实际开发过程中.为了使得程序更加易于 型DataSet搭建数据访问层,为开发高可伸缩的多层数 维护,也可以使用手写代码方式使用强类型DataSet实 据库应用程序提供更加简单、快捷、高效的实现方案 现编写数据的检索、插入、更新、删除等功能,其实现程 序如下所示: 参考文献 //实现数据绑定 [11徐家福.系统程序设计语言[M].北京:科学出版社,1983. if(!Page.IsPostBack) [2]蛙蛙王子..NET 2.0里使用强类型数据创建多层应用『J/ (,/声明强类型jobsTableAdapter实例 OL].【12/13/2005].http://www.cnblogs.com/onlytiancai/archive/ jobsTableAdapter jt=new jobsTableAdapter0; 2005/12/13/295995 htm1. GridView1.DataSource=jt.GetData0; [3]MSDN.在.NET中使用类型化DataSet实现Data Transfer GridView1.DataBind0; Object[J/OL].【4/15/2004].http://msdn.microsoft.com/zh—cn/h— } ∥实现数据插入 brary/ms998529.aspx. jobsTableAdapter jt=new jobsTableAdapter0; [4]Matthew MacDonald。Mario Szpuszta.ASP.NET 3.5高级程 jt.Insert(”更新数据”,20,200); 序设计[M].博思工作室,译.第2版北京:人民邮电出版社. ,,实现数据更新 2008 (上接第143贞) (1)系统设置模块:可以添加、修改、删除系统的基 传输分站的工作状态,观察改进后的传输接口是否有 本信息,如矿井名称、监测时间等。 死机现象。经测试,系统长期运行稳定,各模块工作正 (2)监控模块:负责监控井下智能传感器的各项指 常。 标。 目前本系统已在山西省多个煤矿运用,运行稳定、 (3)数据处理模块:负责对数据进行分析比较、打 接口吞吐量高、测量准确可靠.具有很好的推广和应用 印存储等工作 价值,前景空间广阔。 (4)报警系统模块:负责检查现场监测的数据.发 现有不合适的情况,及时预警。 参考文献: 6、系统稳定性测试及应用前景 [11兰西柱,孙继平.KJ13型矿井监控系统软件结构及功能Ⅱ]煤矿 传输接口设计完成后,我们通过工控仿真机对系 自动4E;1998年第02期 统进行不问断老化试验,以测试系统的稳定性。测试过 [2】解书钢,马维华.基于CAN总线井下人员定位系统的设计m 程如下:取10台GFK3型智能传感器、l0台KJ71B智 装备制造技术;2007年第1O期 能分站、1台改进型KJ365传输分站。连接成一整套系 [3】宋柏,任亚军.基于USB的矿井气体检测系统叨工矿自动化; 统。通过1台KDW0.25/660型矿用防爆兼本安型电源 2009年第O7期 箱进行供电,老化周期为七天。每天上午和下午分别选 【4】盖素丽,常青.USB接口的驱动程序开发U】河北省科学院学 报;2005年O6期 取3—5台智能传感器,改变传感器的输出值,观察智能 [5】周冲,刘镇.基于WDM的USB驱动程序设计与实r ̄lJ]科学 分站的信号采集状态是否正常。测试系统的巡检状态. 技术与32 ̄;2007年第11期 并对巡检周期和丢包率做出记录。观察各智能分站与