zoukankan      html  css  js  c++  java
  • 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];
    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


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

  • 相关阅读:
    面经二
    面经一
    Java集合-HashSet
    Java集合-LinkedList
    Java集合-ArrayList
    @JsonIgnoreProperties注解不起作用的问题解决
    纯JS实现图片验证码功能并兼容IE6-8
    java设计模式之桥接模式
    java设计模式之职责链模式
    WPF笔记:WPF自定义treeview样式及数据绑定
  • 原文地址:https://www.cnblogs.com/insus/p/3837898.html
Copyright © 2011-2022 走看看