ASP.NET开发,从二层至三层,至面向对象 (4)
繼續(xù)上一篇《ASP.NET開發(fā),從二層至三層,至面向?qū)ο?(3)》http://www.cnblogs.com/insus/p/3826706.html?。我們更深層次學會了邏輯層對象,即各個具體對象與數(shù)據(jù)庫之間的邏輯類。? 我們有分為有處理Access的SQL語句和SQL Server的SQL語句的,還有處理存儲過程和參數(shù)的。
今天Insus.NET再從處理SQL語句對象,再創(chuàng)建一個對象叫SqlStatement吧。讓用戶引用這個類時,無需再寫SQL語句,只管傳入字段,或值,或條件。
實現(xiàn)之前,我們先想一想,SQL語句有SELECT,UPDATE,DELETE,INSERT四種,其中有些SQL語句還需要帶條件。細節(jié)如下,
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)
等等 。
因此,我們需要創(chuàng)建一個字段的類別,如Field:
這個類有兩個property,是為了讓用戶在SELECT,INSERT或是更新時,能傳入所顯示,插入或是更新的字段。
接下來,我們再創(chuàng)建一個WHERE條件類,如Condition,它是讓用戶在SELECT帶有WHERE條件,當然在更新或是刪除時,SQL語句是少不了條件。
這個類,它有三個property。field是指定字段,operators是操作, 你是使用"=",">"還是“<"等,最后一個property為指值。
OK,現(xiàn)在我們可以創(chuàng)建可封裝的類SqlStatement,看看:
?
?寫到這里,也許會有網(wǎng)友會問題,有些情形上面的無實現(xiàn)。Insus.NET想,這畢竟是SQL語句,它比起存儲過程來說,一些不足之處,自然顯示出來,因此Insus.NET一直在使用存儲過程的原因。上面這個SqlStatement類,還是可以擴展的。這需要發(fā)揮個人的想象力了。
為了能讓大家能更好的使用。下面Insus.NET重構前幾篇寫好的類Item,改為應用這個SqlStatement類。
先來看看GetAll()方法,注釋掉的語句,是原來的方法:
讓你自動產(chǎn)生SQL語句。
如果是SQL數(shù)據(jù)庫,最后兩句:
?
?下面是重構Insert()方法,數(shù)據(jù)添加,有地方需要注意的,在處理字段時,SELECT語句,值傳入的是null,而插入的SQL語句,需要把value傳入property。當然你寫UPDATE更新時,也應如此。上面的SqlStatement類, Insus.NET并沒有寫處理當沒有值,需要讓動態(tài)產(chǎn)生的SQL有傳入為null,如[xxx] = null等。
刪除方法,需要傳入WHERE條件。下面Insus.NET只是演示傳入單個條件,如果WHERE條件中,還帶有OR,AND等時,如何傳,需要想一想。
下面是重構獲取標量的方法,也就是讓程序能執(zhí)行ExecuteScalar()方法:
?
這幾篇中,沒有演示過更新的方法。因為BizBase或者BizBaseSQL類的幾個方法,均有演示。不過Insus.NET在下面還是列舉一個更新的方法,也就是為Item類,有update()方法:
?
?
本篇演示源程序(Access DB; .NET Framework 4.0;):
http://download.cnblogs.com/insus/ASPDOTNET/Asp_OOP4.rar
注:文章太長了,寫成續(xù)集,請關注......
?
轉(zhuǎn)載于:https://www.cnblogs.com/insus/p/3837898.html
總結
以上是生活随笔為你收集整理的ASP.NET开发,从二层至三层,至面向对象 (4)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenResty+lua+Graphi
- 下一篇: grunt前端构建工具使用教程