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

继续上一篇《ASP.NET开发,从二层至三层,至面向对象 (3)http://www.cnblogs.com/insus/p/3826706.html 。我们更深层次学会了逻辑层对象,即各个具体对象与数据库之间的逻辑类。  我们有分为有处理Access的SQL语句和SQL Server的SQL语句的,还有处理存储过程和参数的。

今天Insus.NET再从处理SQL语句对象,再创建一个对象叫SqlStatement吧。让用户引用这个类时,无需再写SQL语句,只管传入字段,或值,或条件。

实现之前,我们先想一想,SQL语句有SELECT,UPDATE,DELETE,INSERT四种,其中有些SQL语句还需要带条件。细节如下,
SELECT语句:
SELECT * FROM table
SELECT * FROM table WHERE xxx= yyy
SELECT col1,col2,...FROM table
SELECT col1,col2,... FROM table WHERE xxx= yyy

UPDATE语句:
UPDATE table SET xxx= yyy WHERE zzz=aaa

DELETE语句:
DELETE FROM table WHERE xxx= yyy

INSERT语句:
INSERT INTO table(col,col2) VALUES(xxx,yyyy)

等等 。
因此,我们需要创建一个字段的类别,如Field:

这个类有两个property,是为了让用户在SELECT,INSERT或是更新时,能传入所显示,插入或是更新的字段。

接下来,我们再创建一个WHERE条件类,如Condition,它是让用户在SELECT带有WHERE条件,当然在更新或是删除时,SQL语句是少不了条件。

这个类,它有三个property。field是指定字段,operators是操作, 你是使用"=",">"还是“<"等,最后一个property为指值。

OK,现在我们可以创建可封装的类SqlStatement,看看:

写到这里,也许会有网友会问题,有些情形上面的无实现。Insus.NET想,这毕竟是SQL语句,它比起存储过程来说,一些不足之处,自然显示出来,因此Insus.NET一直在使用存储过程的原因。上面这个SqlStatement类,还是可以扩展的。这需要发挥个人的想象力了。

为了能让大家能更好的使用。下面Insus.NET重构前几篇写好的类Item,改为应用这个SqlStatement类。
先来看看GetAll()方法,注释掉的语句,是原来的方法:

让你自动产生SQL语句。
如果是SQL数据库,最后两句:

 BizBaseSQL objBizBaseSQL = new BizBaseSQL();
 objBizBaseSQL.Sql = objSqlStatement.GenerateSelectStatement();
 return  objBizBaseSQL.ExecuteDataSet().Tables[0];

下面是重构Insert()方法,数据添加,有地方需要注意的,在处理字段时,SELECT语句,值传入的是null,而插入的SQL语句,需要把value传入property。当然你写UPDATE更新时,也应如此。上面的SqlStatement类, Insus.NET并没有写处理当没有值,需要让动态产生的SQL有传入为null,如[xxx] = null等。

删除方法,需要传入WHERE条件。下面Insus.NET只是演示传入单个条件,如果WHERE条件中,还带有OR,AND等时,如何传,需要想一想。

下面是重构获取标量的方法,也就是让程序能执行ExecuteScalar()方法:

这几篇中,没有演示过更新的方法。因为BizBase或者BizBaseSQL类的几个方法,均有演示。不过Insus.NET在下面还是列举一个更新的方法,也就是为Item类,有update()方法:

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

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

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

时间: 2024-10-24 11:42:37

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

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开发,从二层至三层,至面向对象

昨天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开发,从二层至三层,至面向对象 (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具体近二十年的供应链和电子商务开发经验,行业经验丰富,软件技术实力强大,具