SQL ServerASP.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(Field):
SQL Server 1

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

接下去,大家再创立一个WHERE条件类,如Condition,它是让用户在SELECT带有WHERE条件,当然在更新或是删除时,SQL语句是必不可少条件。
SQL Server 2

这些类,它有五个property。field是指定字段,operators是操作,
你是使用”=”,”>”仍然“<“等,最终一个property为指值。

OK,现在我们得以成立可包裹的类SqlStatement,看看:
SQL Server 3

 

 写到这里,也许会有网友会问题,有些情状上边的无实现。Insus.NET想,这到底是SQL语句,它比起存储过程来说,一些不足之处,自然体现出来,因而Insus.NET一向在应用存储过程的原故。下边那些SqlStatement类,还可以够扩展的。这需要发挥个人的想象力了。

为了能让我们能更好的行使。上边Insus.NET重构前几篇写好的类Item,改为运用这多少个SqlStatement类。
先来探视GetAll()方法,注释掉的言语,是原先的法子:
SQL Server 4

让你活动发出SQL语句。
假定是SQL数据库,最终两句:

SQL Server 5SQL Server 6

 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等。
SQL Server 7

除去方法,需要传入WHERE条件。下边Insus.NET只是出现说法传入单个条件,假如WHERE条件中,还隐含OR,AND等时,怎么样传,需要想一想。
SQL Server 8

下边是重构获取标量的艺术,也就是让程序能执行ExecuteScalar()方法:
SQL Server 9

 

这几篇中,没有以身作则过更新的办法。因为BizBase或者BizBaseSQL类的几个方法,均有示范。不过Insus.NET在下边依然列举一个立异的主意,也就是为Item类,有update()方法:
SQL Server 10

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

注:小说太长了,写成续集,请关注……

 

相关文章