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 ...
随机推荐
- 在Delphi中处理word文档与数据库的互联
在Delphi中处理word文档与数据库的互联 ---- 目前,Delphi被越来越多的人选中作为MIS系统开发中的前台工具.在以Delphi为前台,一些大型数据库为后台的MIS系统中,图形的处理不可 ...
- [译]C#和.NET中的字符串
原文地址:Jon Skeet:Strings in C# and .NET System.String 类型(在C#语言中对应的别名是string)是.NET最重要的类型之一,不幸的是在它身上存在了太 ...
- Gimp RGB 转 CMYK
安装GIMP separate+插件.在Windows的Photoshop中,有转换CMYK的功能,非常简单.在Linux里,通常用GIMP进行转换.由于授权的问题,默认安装的GIMP里没有安装转换的 ...
- Python学习--和 Oracle 交互(2)
当在 mac 电脑上用 Python 读取 oracle 数据库中的中文时,有可能返回数据为“?” 解决方案: 在数据库操作的函数前添加以下代码, import sysreload(sys)sys.s ...
- neo4j图数据库安装以及基本操作命令
neo4j图数据安装以及基本操作命令 neo4j安装配置使用, 安装环境:Ubuntu系统 jdk1.8 (neo4j 只支持jdk1.8以上版本) 下载 neo4j neo4j的下载window可以 ...
- [LNOI2014]LCA(树剖+线段树)
\(\%\%\% Fading\) 此题是他第一道黑题(我的第一道黑题是蒲公英) 一直不敢开,后来发现是差分一下,将询问离线,树剖+线段树维护即可 \(Code\ Below:\) #include ...
- ssh免密码登录Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 的解决方案!
当出现Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 警告的时候,恭喜你,你已经离成功很近了. 远程主机这里设为slave2,用户 ...
- maven build的常用生命周期
常用的maven build goals: validate - validate the project is correct and all necessary information is av ...
- 【2019北京集训2】duck 线段树优化建图+tarjan
题目大意:给你$n$个点,第$i$个点有点权$v_i$.你需要将这$n$个点排成一排,第$i$个点的点权能被累加当且仅当这个点前面存在编号在$[l_i,r_i]$中的点,问你这些点应该如何排列,点权和 ...
- 【rocketMQ】1、搭建MQ服务器,生产一个订单与消费一个订单
1. 先解压 2. maven编译安装.(注意虚拟机采用nat网络模式,需要联网) mvn -Prelease-all -DskipTests clean install -U 启动nameser节点 ...