看一下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...