国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

ASP.NET開發,從二層至三層,至面向對象

2019-11-17 01:37:19
字體:
來源:轉載
供稿:網友

asp.net開發,從二層至三層,至面向對象

昨天Insus.NET有寫了一篇博文《WEB控件沒有什么所謂好不好,而是用得好不好》http://m.survivalescaperooms.com/insus/p/3821644.html 很多網友持意見相左看法,Insus.NET在評論之中也有作出個人回復,見#29與#30樓。本篇Insus.NET繼續再以Web控件來開發,如果你對Web控件無興趣,只能說聲抱歉,可以略過。數據庫是以access為例。Insus.NET好象從沒有有在商業上用過Access數據,全是SQL Server。沒有關系,用什么都一樣。接下來,我們將在asp.net網站上,對這個表進行添加,獲取數據,更新,刪除等一系列操作。每天也許都是重復這些操作,正因為這是最基本功能操作。就是如我們每天吃飯與步行一樣。先實現往數據庫插入數據,在.aspx html markup網頁上,拉幾個TextBox文本框和一個Button銨鈕:

可以切換至.aspx.cs寫按鈕的添加事件ButtonAdd_Click()。由于Item_nbr是一個唯一主鍵,在添加之前,需要作為判斷一下,是否已經存在。如果不存在,可以把記錄插入。這需要在寫程序時想到的問題。

先看看判斷是怎樣寫?如果Item_nbr字段值已經存在數據庫中。程序會提示并return出添加事件。反之,它會繼續跑下面程序:

上面分別應用了OleDbReader和OleDbCommand來判斷與執行插入的SQL語句。數據存儲入數據庫之后,我們需要把想要的數據顯示出來,而不是讓用戶直接去看數據庫內的表。在.aspx網頁,拉一個GridView控件:

在網頁顯示時,數據也一起顯示:在asp.net網頁上,我們能有維護數據的功能,如有添加時有可以寫錯填錯,可以編輯更新,或是對一些記錄要有刪除等。在GridView控件上,添加一列和設置DataKeyNames屬性:

下面寫一下刪除方法的程序:

如果想實現更新的話,它跟獲取數據,刪除數據的程序一樣,只是傳入的SQL語句不一樣。下面再實現一個功能,就是獲取某筆記錄某一單獨字段值:

事件程序,可以參考:

好了,上面所有功能,是這次Insus.NET想表達的。說句實在話,Insus.NET在十年前的剛開始學習和使用.NET Framework2.0寫asp.net時,不知花上多少努力與時間才寫出來。現在回過頭寫,算得上去車輕路熟。實時演示一下上面所有功能:演示完畢,回過頭來看看剛才寫的代碼,有兩行代碼在每一個方法或是與數據庫關聯操作,均出現:對了,這些可以寫入Web.config文件中去,以后變更數據庫時,可以直接去Web.config文件中修改,不必每一頁,每一個函數去找出來改,這樣容易漏改,或錯改。這樣子,所有那兩行代碼,均可改為:

Insus.NET使用Replace()方法,去替代數據庫路徑。

上面所有實現,算得上是兩層,頁面級的。這只是一些練習而已。接下來,你又想在數據庫添加另一個張表,實存儲另外一些數據。如會員,訂單等。每張表的處理,基本上均需要實現上面的功能,添加,更新,刪除等功能。你想到的方法,照著上面的方法,重新寫一份。稍微更好的方法,就是把上面的網頁復制一份,改名。然后修改其中的SQL語句即可。當這些功能要求越來越多,每加一個,就復制一個,改一個。一些代碼不停重復地做時,網頁也隨之不停的澎大,維護起來隨之困難。因此我們自不有然地會想到要怎樣去重構與簡潔它們。

OK,由于這些代碼的耦合性很強,我們在學習面向對象時,可以創建一個對象,如BizBase,把這些處理數據庫的代碼搬移至這個新建的對象中。先從Data_Binding()方法入手,這是從數據庫獲取數據的方法。只有高亮塊代碼是告穩定性,紅色箭頭是兩個變量。我們可以把這兩個變量在BizBase定義為屬性。

然后把穩定性代碼,創建為一個方法:

再來看看Data_Binding()中,是怎樣使用這個對象的方法的:經這樣一封裝,三層樣子已經出來了。處理邏輯的代碼已經跑進BizBase這個類中去了。在.aspx.cs中,我們只管傳經常性變化SQL語句即可。接下來,我們繼續實現刪除方法,判斷,插入的函數,把穩定性的代碼搬移至BizBase對象中。有了這個類別,我們就可以改寫最初寫的代碼,或是有新建的網頁,只要涉及至與數據庫的SELECT,INSERT,UPDATE或DELETE時,均可以使用上面的方法。這也可以算得上我們常說的邏輯層(基本)的。繼續重構與修改網頁,先是判斷記錄是否存在:

添加記錄至數據庫的方法,重構如下:

刪除方法的代碼重構如下:

獲取標量值的方法重構如下:

剛才經過一系列大整改,大挪移,先休息一下,沖杯Coffee。休息是為了能走更遠的路。現在我們在.aspx.cs網頁上看到我們所寫的代碼,還是兩句在幾處地方重復出現:

 string mdb = System.Web.Configuration.WebConfigurationManager.AppSettings["mdb"];string _connectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["InsusConnectionString"].ConnectionString.Replace("mdb", Server.MapPath(mdb));

這樣,我也可以把它們移至BizBase類別中去:

寫在構造函數public BizBase()上面,把兩句改寫為一句。由于我們已經把這個connectionstring移至BizBase類了,因此這個類別中的ConnectionString屬性拿掉:

在.aspx.cs的網頁中,下面的代碼已經變得多余了,義不容遲,把它們刪除,凈化我們的代碼:

寫到這里,相信你多少了解一些,我們的邏輯類庫是怎樣產生的。以后不管有多少個表,需要添加,刪除,更新或是獲取數據(數據集還是標量值),只需實例化BizBase類,傳入SQL語句,執行相關的方法。本篇演示源程序(Access DB; .NET Framework 4.0;):http://download.VEVb.com/insus/ASPDOTNET/Asp_OOP.rar注:文章太長了,寫成續集,請關注......


上一篇:文件下載

下一篇:XML操作

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 辰溪县| 玛曲县| 上栗县| 西乌| 雷波县| 华亭县| 色达县| 沭阳县| 华坪县| 汽车| 大荔县| 巨野县| 安岳县| 龙口市| 苏尼特右旗| 黄骅市| 富蕴县| 乌鲁木齐县| 澄城县| 油尖旺区| 伊宁市| 聊城市| 吕梁市| 中牟县| 叶城县| 张家界市| 娄底市| 贵阳市| 博湖县| 当雄县| 宜黄县| 甘孜县| 丹寨县| 昌邑市| 周宁县| 石楼县| 门源| 德惠市| 五大连池市| 两当县| 青川县|