Enterprise Library 4.0 – May 2008是Microsoft patterns & practices Enterprise Library的新的版本,Enterprise Library有一系列的應用程序塊及一個核心的特性(諸如對象創(chuàng)建、配置文件機制)組成,所有的這些都是可重用的組件,他們被設計來幫助開發(fā)人員應對常見的企業(yè)開發(fā)所面臨的挑戰(zhàn),4.0這個版本還添加了一個新的應用程序塊- Unity Application Block,這個新的應用程序塊為對象產生和依賴注入提供了容器,除此以外4.0還添加了一些其他的新特性.
下面我們就用實例的方式來運用Data Access Application Block:
首先我們需要在項目中引用兩個dll:
Microsoft.Practices.EnterpriseLibrary.Common.dll;
Microsoft.Practices.EnterpriseLibrary.Data.dll;
在項目中添加配置文件app.config或者web.config
然后右鍵config文件選擇Edit Enterprise Library Configuration打開界面化的配置文件編輯工具:
打開編輯工具后
設置LocalSqlServer的相關參數(shù),例如:
參數(shù)說明:
1.ConnectionString:連接字符串。
2.ProviderName:數(shù)據(jù)庫適配器類型。
3.Name:Connection String的名字。
將Data Access Application Block的DefaultDatabase屬性值設置為剛才你設置的LocalSqlServer的名稱,如下圖:
至此,我們的Data最簡潔的配置就完成了,下面我們開始完成我們代碼的編寫
<!--[if !supportLists]-->1. <!--[endif]-->首先我們創(chuàng)建DataBase的實例:
//實例化Database
Database db = DatabaseFactory.CreateDatabase("NorthWindDB");
<!--[if !supportLists]-->2. <!--[endif]-->創(chuàng)建DbCommand對象(1.普通sql語句執(zhí)行的cmd; 2.存儲過程執(zhí)行的cmd):
//創(chuàng)建普通sql語句執(zhí)行的DbCommand對象
DbCommand dbCmd = db.GetSqlStringCommand("sql語句");
//創(chuàng)建存儲過程執(zhí)行的DbCommand對象 方法一
DbCommand dbCmd = db.GetSqlStringCommand("存儲過程的名稱");
dbCmd.CommandType = CommandType.StoredProcedure;
//創(chuàng)建存儲過程執(zhí)行的DbCommand對象 方法二
DbCommand dbCmd = db.GetStoredProcCommand("存儲過程的名稱");
如果需要為存儲過程傳遞參數(shù)則添加下面代碼
db.AddInParameter(dbCmd, "OrderID", DbType.Int32, "參數(shù)的值");//"OrderID"為存儲過程對應的參數(shù)名,第三個參數(shù)為參數(shù)類型
<!--[if !supportLists]-->3. <!--[endif]-->執(zhí)行sql語句或者存儲過程
通常情況下,我們需要返回DataSet、DataReader和單值,要得到這三種返回我們可以分別加上下面的代碼:
DataSet ds = db.ExecuteDataSet(dbCmd); //獲取DataSet
IDataReader dr = db.ExecuteReader(dbCmd); //獲取DataReader
string singleValue = db.ExecuteScalar(dbCmd).ToString();//獲取單值,類型你可以根據(jù)你的需要去設置
好了,這樣以后我們就可以使用我們獲取到的DataSet、DataReader和單值進行我們自己其他的一下操作了(顯示、打印等)。
除了上面我們列舉的一些常見的使用以外,我們在實際的開發(fā)當中還可能經常性的使用事務,下面我列出了事務的使用方式:
DbCommand procCmd1 = null;
DbCommand procCmd2 = null;
using (IDbConnection con = db.CreateConnection())
{
con.Open();
IDbTransaction tran = con.BeginTransaction();
try
{
//執(zhí)行兩個存儲過程
procCmd1 = db.GetStoredProcCommand("存儲過程1");
procCmd2 = db.GetStoredProcCommand("存儲過程2");
db.AddInParameter(procCmd2, "OrderID", DbType.Int32, 10248); //第四個參數(shù)是存儲過程參數(shù)的值,第二個參數(shù)是存儲過程的參數(shù)的名稱
tran.Commit();
}
catch (Exception ee)
{
tran.Rollback();
}
finally
{
con.Close();
}
}
好了,到這里實例就寫完了。^^ Brave chen