概述:本文提供了在多层.net应用程序中实施基于ado.net的数据访问层的指导原则.其重点是一组通用数据访问任务与方案,并指导你选择最合适的途径与技术(68张打印页).
目录 ado.net简介 管理数据库链接 错误处理 性能 通过防火墙建立链接 处理 blobs 事务处理 数据分页
简介
如果你在为.net应用java/j2me/code/ target=_blank>程序设计数据访问层,那么就应该把 microsoft ado.net用作数据访问模型.ado.net扩展丰富,并且支持结合松散的数据访问需求.多层web应用程序及web服务.通常,它利用许多扩展丰富的对象模型, ado.net提供了多种方法用于解决一个特定问题.
本文将指导你选择最合适的数据访问方法,其做法是详细列出大范围的通用数据访问方案,提供运用技巧,并且建议最优实践.本文还回答了其它经常问到的问题:何处最适合存放数据库链接字符串?应如何实现链接存储池?如何处理事务?如何实现分页以允许用户在许多记录中滚动?
注意本文的重点是ado.net的使用:利用sql server .netdata provider--随ado.net一起提供的两个供应器之一--访问microsoft sql server 2000.本文在合适的地方,将突出显示在你使用ole db .net数据供应器访问其它ole db敏感数据源时需要注意的所有差别.
对于利用本文所讨论的指导原则与最优实践所开发的数据访问组件的具体实现,见(data access application block)数据访问应用程序块.注意,本实现的源代码是可以获得的,并且能直接用于你的.net应用程序中.
谁应当阅读本文?
本文为希望构建.net应用程序的应用程序设计师与企业开发人员提供了指导原则.如果你负责设计并开发多层.net应用程序的数据层,那么请阅读本文.
你首先需要知道什么?
要利用本指南构建.net应用程序,你必须有利用activex数据对象(ado)与/或 ole db开发数据访问代码的实际经验,及sql server经验.你也必须明白如何为.net平台开发管理代码,并且也必须清楚ado.net数据访问模型引入的基本变化.有关.net开发的更多信息,见http://msdn.microsoft.com/net .
ado.net简介
ado.net是.net应用程序的数据访问模型.它能用于访问关系型数据库系统,如sql server 2000,及很多其它已经配备了ole db供应器的数据源.在某种程度上,ado.net代表了最新版本的ado技术.然而,ado.net引入了一些重大变化与革新,它们专门用于结构松散的.本质非链接的web应用程序.关于ado 与 ado.net的比较,见msdn中的“用于ado程序员的ado.net”一文.
ado.net引入的一个重要变化是,用datatable, dataset, dataadapter, 与 datareader对象的组合代替了ado recordset对象.datatable表示来自一个表的行集合,在这方面它与recordset类似.dataset表示datatable对象的集合,及与其它表绑定在一起的关系与限制.实际上,dataset是具有内置的扩展标记语言(xml)支持的内存中的关联结构.
dataset的一个主要特点是,它对底层的数据源一无所知,而这些数据源可能用于对其进行填充.这是一个分离的用于表示数据集合的独立实体,并且它可通过多层应用程序的不同层由一个组件传递到另一组件.它也可作为xml 数据流被序列化,因而非常适合于不同类型平台间的数据传输.ado.net使用dataadapter对象为发送到与来自dataset及底层数据源的数据建立通道.dataadapter对象还支持增强的批更新特性,以前这是recorder的相关功能.
图1显示了完整的dataset对象模型.
图1 dataset 对象模型
.net 数据供应器
ado.net 依靠.net 数据供应器的服务. 它们提供了对底层数据源的访问,包括四个主要对象(connection, command, datareader,及dataadapter),目前,ado.net只发行了两个供应器:
sql server .net 数据供应器.这是用于microsoft sql server 7.0及其以后版本数据库的供应器,它优化了对sql server的访问,并利用 sql server内置的数据转换协议直接与sql server通信.
当链接到sql server 7.0 或 sql server 2000时,总是要使用此供应器.
ole db .net 数据供应器.. 这是一个用于管理ole db 数据源的供应器.它的效率稍低于sql server .net data provider,因为在与数据库通信时,它需通过ole db层进行呼叫.注意,此供应器不支持用于开放数据库链接(odbc),msdasql的ole db供应器.对于odbc数据源,应使用odbc .net数据供应器.有关与ado.net兼容的ole db供应器列表,见.... 下一页