ASP.NET开发,从二层至三层,至面向对象

昨天Insus.NET有写了一篇博文《WEB控件没有什么所谓好不好,而是用得好不好http://www.cnblogs.com/insus/p/3821644.html  很多网友持意见相左看法,Insus.NET在评论之中也有作出个人回复,见#29与#30楼。

本篇Insus.NET继续再以Web控件来开发,如果你对Web控件无兴趣,只能说声抱歉,可以略过。

数据库是以Access为例。Insus.NET好象从没有有在商业上用过Access数据,全是SQL Server。没有关系,用什么都一样。

接下来,我们将在asp.net网站上,对这个表进行添加,获取数据,更新,删除等一系列操作。每天也许都是重复这些操作,正因为这是最基本功能操作。就是如我们每天吃饭与步行一样。

先实现往数据库插入数据,在.aspx html markup网页上,拉几个TextBox文本框和一个Button铵钮:

可以切换至.aspx.cs写按钮的添加事件ButtonAdd_Click()。由于Item_nbr是一个唯一主键,在添加之前,需要作为判断一下,是否已经存在。如果不存在,可以把记录插入。这需要在写程序时想到的问题。

先看看判断是怎样写?

如果Item_nbr字段值已经存在数据库中。程序会提示并return出添加事件。反之,它会继续跑下面程序:

上面分别应用了OleDbReader和OleDbCommand来判断与执行插入的SQL语句。数据存储入数据库之后,我们需要把想要的数据显示出来,而不是让用户直接去看数据库内的表。
在.aspx网页,拉一个GridView控件:

在网页显示时,数据也一起显示:

在asp.net网页上,我们能有维护数据的功能,如有添加时有可以写错填错,可以编辑更新,或是对一些记录要有删除等。在GridView控件上,添加一列和设置DataKeyNames属性:

下面写一下删除方法的程序:

如果想实现更新的话,它跟获取数据,删除数据的程序一样,只是传入的SQL语句不一样。下面再实现一个功能,就是获取某笔记录某一单独字段值:

事件程序,可以参考:

好了,上面所有功能,是这次Insus.NET想表达的。
说句实在话,Insus.NET在十年前的刚开始学习和使用.NET Framework2.0写asp.net时,不知花上多少努力与时间才写出来。现在回过头写,算得上去车轻路熟。

实时演示一下上面所有功能:

演示完毕,回过头来看看刚才写的代码,有两行代码在每一个方法或是与数据库关联操作,均出现:

对了,这些可以写入Web.config文件中去,以后变更数据库时,可以直接去Web.config文件中修改,不必每一页,每一个函数去找出来改,这样容易漏改,或错改。

这样子,所有那两行代码,均可改为:

Insus.NET使用Replace()方法,去替代数据库路径。

上面所有实现,算得上是两层,页面级的。
这只是一些练习而已。接下来,你又想在数据库添加另一个张表,实存储另外一些数据。如会员,订单等。每张表的处理,基本上均需要实现上面的功能,添加,更新,删除等功能。你想到的方法,照着上面的方法,重新写一份。稍微更好的方法,就是把上面的网页复制一份,改名。然后修改其中的SQL语句即可。

当这些功能要求越来越多,每加一个,就复制一个,改一个。一些代码不停重复地做时,网页也随之不停的澎大,维护起来随之困难。因此我们自不有然地会想到要怎样去重构与简洁它们。

OK,由于这些代码的耦合性很强,我们在学习面向对象时,可以创建一个对象,如BizBase,把这些处理数据库的代码搬移至这个新建的对象中。先从Data_Binding()方法入手,这是从数据库获取数据的方法。

只有高亮块代码是告稳定性,红色箭头是两个变量。我们可以把这两个变量在BizBase定义为属性。

然后把稳定性代码,创建为一个方法:

再来看看Data_Binding()中,是怎样使用这个对象的方法的:

经这样一封装,三层样子已经出来了。处理逻辑的代码已经跑进BizBase这个类中去了。在.aspx.cs中,我们只管传经常性变化SQL语句即可。接下来,我们继续实现删除方法,判断,插入的函数,把稳定性的代码搬移至BizBase对象中。

有了这个类别,我们就可以改写最初写的代码,或是有新建的网页,只要涉及至与数据库的SELECT,INSERT,UPDATE或DELETE时,均可以使用上面的方法。
这也可以算得上我们常说的逻辑层(基本)的。

继续重构与修改网页,先是判断记录是否存在:

添加记录至数据库的方法,重构如下:

删除方法的代码重构如下:

获取标量值的方法重构如下:

刚才经过一系列大整改,大挪移,先休息一下,冲杯Coffee。休息是为了能走更远的路。

现在我们在.aspx.cs网页上看到我们所写的代码,还是两句在几处地方重复出现:

 string mdb = System.Web.Configuration.WebConfigurationManager.AppSettings["mdb"];
string _connectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["InsusConnectionString"].ConnectionString.Replace("mdb", Server.MapPath(mdb));

这样,我也可以把它们移至BizBase类别中去:

写在构造函数public BizBase()上面,把两句改写为一句。由于我们已经把这个connectionstring移至BizBase类了,因此这个类别中的ConnectionString属性拿掉:

在.aspx.cs的网页中,下面的代码已经变得多余了,义不容迟,把它们删除,净化我们的代码:

写到这里,相信你多少了解一些,我们的逻辑类库是怎样产生的。以后不管有多少个表,需要添加,删除,更新或是获取数据(数据集还是标量值),只需实例化BizBase类,传入SQL语句,执行相关的方法。

本篇演示源程序(Access DB; .NET Framework 4.0;):
http://download.cnblogs.com/insus/ASPDOTNET/Asp_OOP.rar

注:文章太长了,写成续集,请关注......

ASP.NET开发,从二层至三层,至面向对象

时间: 2024-10-31 10:29:56

ASP.NET开发,从二层至三层,至面向对象的相关文章

ASP.NET开发,从二层至三层,至面向对象 (5)

此是一系列博文,最后一篇了.也是面向初学者而作,望你们能有更好,更多对ASP.NET面向对编程了解与认识. 前一篇中<ASP.NET开发,从二层至三层,至面向对象 (4)>http://www.cnblogs.com/insus/p/3837898.html 中,Insus.NET让大家了解到无需再写SQL语句,只管传入字段,或值,或条件,文中虽然列举了一些例子,但还可以任凭发挥与扩展. Insus.NET在第三篇<ASP.NET开发,从二层至三层,至面向对象 (3)>http:/

ASP.NET开发,从二层至三层,至面向对象 (4)

继续上一篇<ASP.NET开发,从二层至三层,至面向对象 (3)>http://www.cnblogs.com/insus/p/3826706.html .我们更深层次学会了逻辑层对象,即各个具体对象与数据库之间的逻辑类.  我们有分为有处理Access的SQL语句和SQL Server的SQL语句的,还有处理存储过程和参数的. 今天Insus.NET再从处理SQL语句对象,再创建一个对象叫SqlStatement吧.让用户引用这个类时,无需再写SQL语句,只管传入字段,或值,或条件. 实现之

ASP.NET开发,从二层至三层,至面向对象 (3)

继续上一篇<ASP.NET开发,从二层至三层,至面向对象 (2)>http://www.cnblogs.com/insus/p/3825805.html .我们学会了怎样创建对象,把BizBase类从页面级分离,解耦合度.亲的更亲,疏的更疏. 上面使用的是Access数据,将达不到扩展与升级的要求.程序在发展的同时,有可能会转向SQL数据库,或是有些模块外包.在这情形出现,我们需要定制设计规范接口.接手此软开发的团队,所在逻辑处层中,实作这个接口即可. 下面Insus.NET尝试写一个接口,在

ASP.NET开发,简化与封装

微软的ASP.NET的开发,就是面向对象的编程,当然前端也能体验至面向对象的话,使用Web控件也必须的. 任一控件,我们均可以在后端.aspx.cs或.aspx.vb程序中new一个对象出来. 很多场合里,在开发ASP.NET开发中,后端与前端交互,我们使用控件确实能方便与快捷互通. 本篇所涉及的内容以html markup标签与javascript(或jQuery)无关,因为演示的是Web控件应用.Insus.NET经常会针对开发的应用程序,写一些常用或是特定的对象或是控件.在一起开发的团队的

[c#]asp.net开发微信公众平台(8)微信9大高级接口,自定义菜单

前7篇把最基础的消息接收和回复全做完了,  也把高级接口的入口和分拆处理写好了空方法,  此篇接着介绍微信的9大高级接口, 并着重讲解其中的自定义菜单. 微信9大接口为: 1.语音识别接口 2.客服接口 3.OAuth2.0 网页授权接口 4.生成带参数的二维码接口 5.获取用户地理位置接口 6.获取用户基本信息接口 7.获取关注者列表接口 8.用户分组接口 9.上传下载多媒体文件接口 具体介绍: 1. 语音识别 功能描述:通过语音识别接口,用户发送的语音,将同时给出语音识别出的文本内容. 实用

asp.net 开发时的小问题

最近公司老板让我用asp.net开发公司的小的ERP系统,在用jquery ajax访问aspx.cs文件中的[WebMethod]的静态方法时老是遇到身份验证的错误信息,头疼了好久找不到方法,终于在一个外国的外码分享网站找到了解决的方法,就是把APP_Code里的RouteConfig.cs文件中的 settings.AutoRedirectMode = RedirectMode.Permanent 改为 settings.AutoRedirectMode = RedirectMode.Off

asp.net5开发中DNX SDK版本的影响

某次asp.net5开发中遇到了一个很奇怪的问题,引用部分的nuget包没有显示任何错误,如下图: 但是编译时出现了几百个错误: 错误基本都是形如“CS0246 The type or namespace name 'Key' could not be found (are you missing a using directive or an assembly reference?) ”这种错误, 给人的第一感觉就是nuget包引用出了问题,但是不管你怎么检查就是查不出来哪里错了. 更离奇的是

ASP.Net开发基础温故知新学习笔记

申明:本文是学习2014版ASP.Net视频教程的学习笔记,仅供本人复习之用,也没有发布到博客园首页. 一.一般处理程序基础 (1)表单提交注意点: ①GET通过URL,POST通过报文体: ②需在HTML中为表单元素设置name: ③元素id是给Dom用的,name才是提交给服务器用的: (2)请求处理响应模型: ①浏览器发出访问请求→②服务器处理访问请求并返回HTML→③浏览器解析HTML并显示页面 (3)GET与POST的区别:(★★★→重点) ①GET通过URL传值,而POST通过HTT

在惠州惠阳上班,拿深圳的工资,你有兴趣吗?招ASP.NET 开发人员,工作地点:惠州惠阳

条件: 一.熟练掌握ASP.NET 开发,具有MVC ,EF,LINQ等开发经验: 二.熟悉DIV ,HTML,jquery等技术: 三.对供应链和电子商务方面有较高的兴趣: 四.有一年以上工作经验:有创业热情: 五.有UI设计经验优先录取: 工作地点: 惠州惠阳秋长. 公司提供住宿,工作时间自由:待遇面议(参比深圳水平): 公司简介: 本团队是美国Logiciel.INC 在中国大陆区的技术团队,Logiciel.INC具体近二十年的供应链和电子商务开发经验,行业经验丰富,软件技术实力强大,具