如何封装你的数据访问层.ppt_第1页
如何封装你的数据访问层.ppt_第2页
如何封装你的数据访问层.ppt_第3页
如何封装你的数据访问层.ppt_第4页
如何封装你的数据访问层.ppt_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

如何封装你的数据访问层,By ,为何要封装数据访问层,先看传统数据库操作代码: string strConnection = “Server=(local);UID=sa;Pwd=sa;Database=northwind“; SqlConnection conn = new SqlConnection(strConnection); conn.Open(); string sql = “insert into Shippers values(123,3215125)“; SqlCommand cmd = new SqlCommand(sql, conn); cmd.ExecuteNonQuery(); this.Label1.Text = “ok“; cmd.Connection.Close();/始终记住在页完成执行之前关闭与数据模型的连接。如果不关闭连接,则可能会在等待页实例被垃圾回收处理期间不经意地超过连接限制。,缺点: 1 代码放在一个事件中,紧耦合,不利于扩展; 2 手工管理连接,需要显示地关闭打开连接; 3 不利于连接的共享,性能效率低下; 4 SQL语句、连接字符串外露,不利于数据库安全; 5 代码需要重复书写,不利于重用;,为何要封装数据访问层,还有更多的原因,影响着程序的复用性和软件的灵活性: 数据库类型是变动的 比如,如果使用ACCESS数据库,那么在程序中会使用System.Data.OleDb命名空间下的类,如OleDbConnection,OleDbParameter,OleDbDataAdapter等等。如果现在要求支持SQL Server数据库该怎么办呢?那么就需要修改现有的大量的代码,将System.Data.OleDb下的类全部替换为System.Data.SqlClient命名空间下的类,即使是使用“查找/替换”进行批量的修改,也是非常繁琐,也很容易出错。当然还会存在一些错误,比如,OleDb是使用“?”来传递参数的,而SQL Server中使用的是命名参数(如,“para”)。因此还需要修改大量的SQL语句。 主键生成的规则不同 不同应用环境下,可能使用不同的主键生成策略,有的需要使用数据库唯一键,有的使用表唯一键,有的需要加入时间或其他标记,有的只使用简单的计数器就可以,有的使用GUID 如果程序中写死了,下次环境变了,需要使用新的规则时,就又得改代码喽。 数据库连接管理 控制连接的数目,有时时单个连接,有时是若干个连接,有时使用连接池,我们需要采用这样的数据访问架构,如何设计自己的数据访问层?,可以自己设计; 有兴趣的同学自己研究;网上有很多设计参考范例; 可以使用微软设计的企业开发库;,微软企业开发库介绍,1.什么是Enterprise Library? Enterprise Library 由一组应用程序块组成(Application Block),每个应用程序块旨在解决开发企业级应用程序 时的某一方面 2.Enterprise Library 有什么用? 提高企业级应用程序的可维护性和扩展性。 最大限度的重用,可作为公司的积累。 这些是微软的基准代码,可以通过学习源代码,提高编程能力。 建立更优雅更灵活的企业级应用程序. 3.Enterprise Library 由哪些部分组成? 目前的Enterprise由七个部分组成。它们分别: 1). 配置应用程序块 2). 数据访问应用程序块 3). 安全应用程序块 4). 加密应用程序块 5). 缓存应用程序块 6). 异常处理应用程序块 7). 日志应用程序块 4.为什么要使用Enterprise Library? 可以说它涵盖了开发任何企业级应用都要用到的基础部分,是最佳实践。 它的源代码是可以修改和扩展而不用遵照任何协议。这样就可以定制自己的应用程序块。,微软企业开发库介绍,5.各个应用程序块的依赖关系是怎样的? 可以看到Enterprise Library的核心是Configuration Application Block.其它应用程序块都对它有依赖.,微软企业开发库介绍,6.如何开始使用Enterprise Library? 1).从前面的地址下载EnterpriseLibrary,安装,运行QuickStart.通过这个可以获得一些直观印象. 2).开始学习Configuration Application Block.阅读Configuration Application Block文档 3).从下载视频讲座 4).观看视频讲座,单步调试Configuration Application Block的QuickStart 项目. 5).自己动手从头做一个自己的例子. 6).开始学习别的Application Block. 7).将Application Block应用到项目中.,企业开发库数据访问块的使用,加载数据:,企业开发库数据访问块的使用,调用存储过程示例: protected void ButtonUpdate_Click(object sender, EventArgs e) Database db = DatabaseFactory.CreateDatabase(); string spName = “Region_InsertDeleteUpdate“; DbCommand dbCommand = db.GetStoredProcCommand(spName); db.AddInParameter(dbCommand, “Action“, DbType.Int32, 2); db.AddInParameter(dbCommand, “RegionID“, DbType.Int32, Convert.ToInt32(this.TextBox_ID.Text); db.AddInParameter(dbCommand, “RegionDescription“, DbType.String, this.TextBox_descrp.Text); db.ExecuteNonQuery(dbCommand); ,如何封装微软企业数据库访问块,对于后台表Region表的操作(增删修改查)如何进行。,用实体类封装数据访问块,Region是一个关系表,也对应一个实体; Region.cs文件 using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using Microsoft.Practices.EnterpriseLibrary.Configuration; using Microsoft.Practices.EnterpriseLibrary.Data;,用实体类封装数据访问块,namespace ReGion public class gionEntity #region protected fields protected int m_regionID; protected string m_regionDescription = String.Empty; #endregion #region public properties public int RegionID get return m_regionID; set m_regionID = value; public string RegionDescription get return m_regionDescription; set m_regionDescription = value; #endregion #region public methods public virtual void Populate(IDataReader reader) try m_regionID = reader.GetInt32(0); m_regionDescription = reader.GetString(1); catch throw new FormatException(“DataReader format error!“); public virtual void Populate(DataRow row) try m_regionID = (int)row0; m_regionDescription = (string)row1; catch throw new FormatException(“DataRow format error!“); #endregion ,前台ASPX页面的代码:,using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using ReGion; using Microsoft.Practices.EnterpriseLibrary.Configuration; using Microsoft.Practices.EnterpriseLibrary.Data;,前台ASPX页面的代码:,public partial class TestDAAB : System.Web.UI.Page protected void

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论