继续上一篇《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];

View Code

下面是重构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

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

转载于:https://www.cnblogs.com/insus/p/3837898.html

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

  1. 【ASP.NET开发】.NET三层架构简单解析

    这篇文章本来应该很早就写出来的,但是一直苦于自己的精神能力有限,而且已经到了我们学校的考试周,所以时间上还是有点紧迫.关键的一点就是,找不到合理的思路来写,思路没有的话,就算是再好的素材,也写不来大家 ...

  2. 镇江php开发,myweb 我的家乡镇江,web技术开发的网站,三层架构,5大模块设计 WEB(ASP,PHP,...) 238万源代码下载- www.pudn.com...

    文件名称: myweb下载 收藏√  [ 5  4  3  2  1 ] 开发工具: HTML 文件大小: 8226 KB 上传时间: 2015-04-11 下载次数: 0 提 供 者: min 详细 ...

  3. 【ASP.NET开发】ASP.NET(MVC)三层架构知识的学习总结

    至从使用过一次MVC进行团队开发后,体会到了面向对象开发软件的便利.使用MVC的时候,各个层之间的低耦合使得他们之间的联系非常的第,也就降低了模块之间的依赖程度. 首先介绍一下MVC的意义,和各个层面 ...

  4. ASP.NET开发,简化与封装

    微软的ASP.NET的开发,就是面向对象的编程,当然前端也能体验至面向对象的话,使用Web控件也必须的. 任一控件,我们均可以在后端.aspx.cs或.aspx.vb程序中new一个对象出来. 很多场 ...

  5. 专门为ADO二层升三层的咏南中间件(特种用途)

    专门为ADO二层升三层的咏南中间件(特种用途) 演示下载:链接: https://pan.baidu.com/s/1bulGBIZ6A1nkeErxIrGsGA 密码: 22dk 解压后运行ynmai ...

  6. ASP.NET 开发

    ASP.NET 开发 母版页和内容页 给每个页面定义公共的元素,然后在内容页对应控件中写各元素的不同实现 内容页创建方式,在创建Web窗体时勾选"选择模板页" 服务器控件对Text ...

  7. 数通 | 从二层、三层的概念切入这段时间学习的数通知识

    文章目录 话题引入 实例分析一波 实例一 实例二 实例小结 补充内容 局域网&以太网 网络适配器 三层交换机 VLAN 没讨论到的地方 参考资料 话题引入 在数通学习中,不可避免的会看到&qu ...

  8. 《ASP.NET 开发从入门到精通》----2.3 编译和部署ASP.NET程序

    本节书摘来自异步社区<ASP.NET 开发从入门到精通>一书中的第2章,第2.3节,著 张明星 ,责任编辑 张 涛, 更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  9. 用 ASP.NET 开发 Web 服务的五则技巧

    (转的,作者不详) 一.禁用HTTP POST/GET协议 除非另外指定,否则,.NET将试图把Web服务绑定到三种协议:HTTP/POST.HTTP/GET和SOAP.之所以说"试图&qu ...

最新文章

  1. DeepChem | PyTorch中用自定义层实现DeepChem的GraphConvLayer
  2. 升级Windows Phone Developer Tools Beta
  3. 在 Azure Functions 上使用不同的路由前缀
  4. c语言求a1到an的和,C语言菜鸟基础教程之a++与++a
  5. 详解HTML5中rel属性的prefetch预加载功能使用
  6. ACM_一道耗时间的水题
  7. java在线编译器手机版_java编译器app_java编译器手机版_java编程-多特软件站安卓网...
  8. 分布式机器学习联邦学习论文阅读笔记(持续更新)
  9. UE4 LOD Screen Size
  10. SqlServer 如何插入图片和导出图片数据
  11. Android手机录制屏幕及转GIF
  12. 梅科尔工作室深度学习第五课-CNN
  13. linux内核就是外包公司老板
  14. 让你久等了!《开源安全运维平台OSSIM疑难解析--入门篇》9月上市
  15. 如何在 R 中计算调整后的 R 平方
  16. 520谁才是你的真爱?
  17. CF715B complete the gragh
  18. jQuery小型mp3音乐播放器插件
  19. 阿里云Intel Xeon Platinum 8269CY(Cascade Lake)服务器CPU性能评测
  20. c语言如何输入一篇英文文章,(急急,救命啊!c语言)输入一篇英语文章,求输出这篇文章的所有英语单词的个数。...

热门文章

  1. 游戏AI研究(三):路径规划
  2. ORACLE中的INTERVAL类型
  3. linux覆盖和追加
  4. Oracle Golden Gate 系列十一 -- 配置 GG DDL 同步 说明 与 示例
  5. LogMiner学习笔记
  6. Appscan漏洞 之 加密会话(SSL)Cookie 中缺少 Secure 属性
  7. Oracle 跨库查询表数据(不同的数据库间建立连接)
  8. 整型数据在内存中的存放形式
  9. 关于box-shadow、border-radius不兼容ie8的解决办法
  10. ubuntu下安装codeTyphon