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


注:文章太長了,寫成續集,請關注......

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM