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[];
下面是重构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)的更多相关文章
- ASP.NET开发,从二层至三层,至面向对象 (5)
此是一系列博文,最后一篇了.也是面向初学者而作,望你们能有更好,更多对ASP.NET面向对编程了解与认识. 前一篇中<ASP.NET开发,从二层至三层,至面向对象 (4)>http://w ...
- ASP.NET开发,从二层至三层,至面向对象 (3)
继续上一篇<ASP.NET开发,从二层至三层,至面向对象 (2)>http://www.cnblogs.com/insus/p/3825805.html .我们学会了怎样创建对象,把Biz ...
- ASP.NET开发,从二层至三层,至面向对象 (2)
继续上一篇<ASP.NET开发,从二层至三层,至面向对象>http://www.cnblogs.com/insus/p/3822624.html .我们了解到怎样把自己的程序由二层变为三层 ...
- 【ASP.NET开发】.NET三层架构简单解析
对于三层架构来说,主要是使用设计模式的思想,对于项目的各个模块实现"高内聚,低耦合"的思想.这里就不做详细的介绍了,如果大家有兴趣,可以阅读软件工程和设计模式相关文章. 对于三层架 ...
- ASP.NET开发,简化与封装
ASP.NET开发,简化与封装 微软的ASP.NET的开发,就是面向对象的编程,当然前端也能体验至面向对象的话,使用Web控件也必须的. 任一控件,我们均可以在后端.aspx.cs或.aspx.vb程 ...
- 专门为ADO二层升三层的咏南中间件(特种用途)
专门为ADO二层升三层的咏南中间件(特种用途) 演示下载:链接: https://pan.baidu.com/s/1bulGBIZ6A1nkeErxIrGsGA 密码: 22dk 解压后运行ynmai ...
- 为方便二层升三层新增的远程方法QuerySql6()
为了方便原来D6,D7开发的二层老程序升级为三层,新增了远程方法QuerySql6().充分地兼容原来二层SQL的写法. 1)公共方法ParamsToStr() function ParamsToSt ...
- DELPHI7 ADO二层升三层新增LINUX服务器方案
DELPHI7 ADO二层升三层新增LINUX服务器方案 引子:笔者曾经无数次在用户的LINUX服务器上创建一个WINDOWS虚拟机,用于运行自己DELPHI开发中间件. 现在再不需要如此麻烦了. 咏 ...
- 下一代Asp.net开发规范OWIN(1)—— OWIN产生的背景以及简单介绍
随着VS2013的发布,微软在Asp.Net中引入了很多新的特性,比如使用新的权限验证模块Identity, 使用Async来提高Web服务器的吞吐量和效率等.其中一个不得不提的是OWIN和Katan ...
随机推荐
- winform最小化后重复进load事件原因
最近编写一个工具发现的问题,窗体不论是最小化还是进入托盘,重新打开的时候都会进入控件load事件. 产生这个现象的条件是: 1.使用了用户控件,在控件中使用了load事件 2.在主窗体中,隐藏或显示任 ...
- Win10远程桌面出现 身份验证错误,要求的函数不受支持,这可能是由于CredSSP加密Oracle修正 解决方法
升级至win10 最新版本10.0.17134,远程桌面连接Window Server时报错信息如下: 出现身份验证错误,要求的函数不正确,这可能是由于CredSSP加密Oracle修正. 解决方法: ...
- .net图表之ECharts随笔03-热力地图
基于01和02 要得到如图所示的热力地图(我从NuGet上下载的包没有heatmap.js文件,没法直接搞热力图,只好暂时先搞着地图.后面尽量搞一下),一般要设置四个参数——title.tooltip ...
- AEAI DP开发统计分析
1 背景概述 平时做统计分析都是调rest服务,给前台提供数据,然后在管理控制台里配置portlet.但并不是所有的项目都会用到portal,这时就需要在AEAI DP应用开发平台里开发统计分析了,下 ...
- [译] 玩转ptrace (一)
[本文翻译自这里: http://www.linuxjournal.com/article/6100?page=0,0,作者:Pradeep Padaia] 你是否曾经想过怎样才能拦截系统调用?你是否 ...
- 【BZOJ3551】 [ONTAK2010]Peaks加强版
BZOJ3551 [ONTAK2010]Peaks加强版 Solution Kruscal重构树后发现可以对于小于的离散化然后倍增+主席树找到上一个的可行解. 然后就可以了. 如果数组开的不好,容易在 ...
- ceph 源码安装 configure: error: "Can't find boost spirit headers"
问题:configure: error: "Can't find boost spirit headers" 解决: 推荐:sudo apt-get install libboos ...
- 抓取分析网页批量下载评书(3)之批量下载mp3
本系列目录: <1.搜索有声小说> <2.分析详细页地址> <3.批量下载mp3> 本篇是大结局,看过前两篇的放心吧,不会有 ...
- select2插件使用小记2 - 多选联动 - 笔记
这是select2插件使用的第二篇,可参考第一篇 select2插件使用小记.上一篇主要是关于基本的使用,这篇主要是关于多选,及联动的.侧重点不同. 效果图如下: 遵从W3C标准:结构.样式.行为.以 ...
- Vue + Bootstrap 制作炫酷个人简历(一)
最近看了别人做的简历,简单炫酷,自己非常喜欢,于是打算自己做一个,尝试一下. 由于写这篇随笔的时候才开始动工,所以目前没有成品给大家看. emmm等我更新完会在最后附上成品. 现在 开始! 首先 配置 ...