继续上一篇《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)
这个类有两个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];