學習PetShop3 0(8)資料訪問

2021-06-15 18:37:14 字數 1654 閱讀 2326

看一下sqlserverdal,前面有高人說了,那個sqlhelper類似於daab for .net,因此在這裡我就不多話了,對daab for .net的討論可以參看

。來看account.cs,裡面有乙個getaddress方法,用來通過使用者名稱獲得使用者資料。在這裡面主要是分兩步,第一步是獲得引數並給其賦值,第二步是使用sqldatareader來從資料庫取值。

public addressinfo getaddress(string userid)

}return address;}

引數的獲得比較複雜,先來看sqldatareader的使用吧

using (sqldatareader rdr = sqlhelper.executereader(sqlhelper.conn_string_non_dtc, commandtype.text, sql_select_address, addressparms))

}很簡單的應用,sqlhelper.executereader的確是起到了和daab for .net差不多的作用。因為是獲得個人資料,所以這裡只有一條記錄,就算是要處理需要分頁的大資料量時,它也是這樣用sqldatareader返回所有的記錄,但是之後就會把這些記錄全部儲存在cache中,這樣以後就不用查詢資料庫了。

getaddressparameters方法用來獲得此次操作需要的引數,它也是使用了sqlhelper的相關方法來完成的。

private static sqlparameter getaddressparameters() ;

//建立新的引數陣列,然後「快取」起來

sqlhelper.cacheparameters(sql_select_address, parms);

} return parms;

}我們可以接著看sqlhelper中的細節部分

//parmcache的定義

private static hashtable parmcache = hashtable.synchronized(new hashtable());

//「快取」引數

public static void cacheparameters(string cachekey, params sqlparameter cmdparms)

///

/// retrieve cached parameters

///

/// key used to lookup parameters

/// cached sqlparamters array

public static sqlparameter getcachedparameters(string cachekey)

用來快取引數的parmcache實際上乙個private static hashtable,因為是static,所以自然是獨一無二的了,建立一次就可以永遠使用,起到和快取差不多的效果。

在返回引數時要用clone來建立乙個新的引數陣列返回,是因為parmcache只有乙個,而返回的引數陣列則至少乙個人用乙個。更為重要的是,現在儲存在parmcache的引數列表都是沒有具體值的引數,而返回後則根據每個使用者的不同情況而被賦於不同的值。

從這裡子可以看出,有乙個自己的daab是多麼的重要。先前在論壇看到過有人喜歡用拖的方式來進行資料庫的連線,那種做法我覺得不是很好,手寫**很重要的,寫乙個自己順手的daab更是重要。

Petshop4 0學習日誌2

2 petshop的訂單處理 petshop中對訂單的處理主要使用了策略模式 同步和非同步 1 同步 petshop系統預設的就是同步策略 在bll業務層的order中,插入資料時,首先利用反射機制確定使用的策略模式,預設選擇同步機制。對於,同步機制,系統直接呼叫idal,對資料進行操作,插入資料。...

PetShop 4 0學習 介紹及安裝

圖18 1 petshop 4.0安裝介面圖1 petshop 4.0的安裝過程與安裝其他應用程式類似,只要不斷單擊 下一步 按鈕即可。在整個安裝過程中,需要注意兩個方面 一是petshop 4.0安裝程式允許使用者設定原始檔儲存目錄 見圖18 1 預設情況下,原始檔儲存在c program fil...

PetShop學習記錄 資料庫訪問

背景知識 利用 反射代替new assembly.load 程式集 createinstance 命名空間.類 這裡的程式集讀取的是web層bin檔案下對應的dll,所以必須把對應的dll放入bin資料夾下 petshop例項 介面層訪問bll層,bll通過反射newiproduct物件,訪問sql...