Enterprise Library Step By Step系列(四):數(shù)據(jù)訪問程序塊——進(jìn)階篇
寫在前面:在進(jìn)階篇中,主要通過對使用存儲過程,使用事務(wù),加密連接串三部分內(nèi)容的介紹,給企業(yè)庫的初學(xué)者提供一點(diǎn)幫助。
一. 使用存儲過程:
關(guān)于數(shù)據(jù)訪問應(yīng)用程序塊的介紹在入門篇里面已經(jīng)說過了,這里不再重復(fù)。下面我們來看看在數(shù)據(jù)訪問應(yīng)用程序塊里面使用存儲過程的方法:
1. 不傳遞參數(shù):不傳遞參數(shù)時值需要指定存儲過程的名稱,已經(jīng)命令的類型即可。
1
/// <summary>
2
/// 執(zhí)行存儲過程(1)——不傳遞參數(shù)(NoPara)
3
/// </summary>
4
private void FormatDataBySp1()
5
{
6
///創(chuàng)建數(shù)據(jù)庫實(shí)例
7
Database db = DatabaseFactory.CreateDatabase("NorthWind");
8
9
///傳遞參數(shù)
10
DBCommandWrapper dbc = db.GetStoredProcCommandWrapper("GetProductsList");
11
12
///執(zhí)行存儲過程
13
DataSet ds = db.ExecuteDataSet(dbc);
14
15
///綁定數(shù)據(jù)
16
DataGrid1.DataSource = ds.Tables[0];
17
DataGrid1.DataBind();
18
}
/// <summary>2
/// 執(zhí)行存儲過程(1)——不傳遞參數(shù)(NoPara)3
/// </summary>4
private void FormatDataBySp1()5
{6
///創(chuàng)建數(shù)據(jù)庫實(shí)例7
Database db = DatabaseFactory.CreateDatabase("NorthWind");8
9
///傳遞參數(shù)10
DBCommandWrapper dbc = db.GetStoredProcCommandWrapper("GetProductsList");11

12
///執(zhí)行存儲過程13
DataSet ds = db.ExecuteDataSet(dbc);14
15
///綁定數(shù)據(jù)16
DataGrid1.DataSource = ds.Tables[0];17
DataGrid1.DataBind();18
}2. 傳遞輸入?yún)?shù):需要注意的是在增加參數(shù)時是AddInParameter。
1
/// <summary>
2
/// 執(zhí)行存儲過程(2)——傳遞輸入?yún)?shù)(Input)
3
/// </summary>
4
private void FormatDataBySp2()
5
{
6
///創(chuàng)建數(shù)據(jù)庫實(shí)例
7
Database db = DatabaseFactory.CreateDatabase("NorthWind");
8
9
///傳遞參數(shù)
10
DBCommandWrapper dbc = db.GetStoredProcCommandWrapper("CustOrdersDetail");
11
dbc.AddInParameter("@OrderID",System.Data.DbType.Int32,10248);
12
13
///執(zhí)行存儲過程
14
DataSet ds = db.ExecuteDataSet(dbc);
15
16
///綁定數(shù)據(jù)
17
DataGrid1.DataSource = ds.Tables[0];
18
DataGrid1.DataBind();
19
}
/// <summary>2
/// 執(zhí)行存儲過程(2)——傳遞輸入?yún)?shù)(Input)3
/// </summary>4
private void FormatDataBySp2()5
{6
///創(chuàng)建數(shù)據(jù)庫實(shí)例7
Database db = DatabaseFactory.CreateDatabase("NorthWind");8
9
///傳遞參數(shù)10
DBCommandWrapper dbc = db.GetStoredProcCommandWrapper("CustOrdersDetail");11
dbc.AddInParameter("@OrderID",System.Data.DbType.Int32,10248);12

13
///執(zhí)行存儲過程14
DataSet ds = db.ExecuteDataSet(dbc);15
16
///綁定數(shù)據(jù)17
DataGrid1.DataSource = ds.Tables[0];18
DataGrid1.DataBind();19
}3. 傳遞輸出參數(shù):需要注意的是在增加參數(shù)時是AddOutParameter。
1
/// <summary>
2
/// 執(zhí)行存儲過程(3)——傳遞輸出參數(shù)(Output)
3
/// </summary>
4
private void FormatDataBySp3()
5
{
6
///創(chuàng)建數(shù)據(jù)庫實(shí)例
7
Database db = DatabaseFactory.CreateDatabase("NorthWind");
8
9
///傳遞參數(shù)
10
DBCommandWrapper dbc = db.GetStoredProcCommandWrapper("GetProductDetails");
11
12
dbc.AddInParameter("@ProductID",System.Data.DbType.Int32,12);
13
dbc.AddOutParameter("@ProductName",System.Data.DbType.String,50); //輸出
14
15
///執(zhí)行存儲過程
16
db.ExecuteNonQuery(dbc);
17
18
string result = dbc.GetParameterValue("@ProductName").ToString(); //得到輸出參數(shù)的值
19
}
/// <summary>2
/// 執(zhí)行存儲過程(3)——傳遞輸出參數(shù)(Output)3
/// </summary>4
private void FormatDataBySp3()5
{6
///創(chuàng)建數(shù)據(jù)庫實(shí)例7
Database db = DatabaseFactory.CreateDatabase("NorthWind");8
9
///傳遞參數(shù)10
DBCommandWrapper dbc = db.GetStoredProcCommandWrapper("GetProductDetails");11

12
dbc.AddInParameter("@ProductID",System.Data.DbType.Int32,12);13
dbc.AddOutParameter("@ProductName",System.Data.DbType.String,50); //輸出14

15
///執(zhí)行存儲過程16
db.ExecuteNonQuery(dbc);17
18
string result = dbc.GetParameterValue("@ProductName").ToString(); //得到輸出參數(shù)的值19
}二. 使用事務(wù):
在企業(yè)庫數(shù)據(jù)訪問應(yīng)用程序塊里面,對事務(wù)提供了很好的支持,具體的使用方法在程序里面有注釋,這里就不多說了。
1
/// <summary>
2
/// 利用事務(wù)更改數(shù)據(jù)
3
/// </summary>
4
private void ExecuteUseTran()
5
{
6
///創(chuàng)建數(shù)據(jù)庫實(shí)例
7
Database db = DatabaseFactory.CreateDatabase("NorthWind");
8
9
using(IDbConnection Idbconn = db.GetConnection())
10
{
11
///打開連接
12
Idbconn.Open();
13
14
///創(chuàng)建事務(wù)
15
IDbTransaction Idbtran = Idbconn.BeginTransaction();
16
17
try
18
{
19
///執(zhí)行兩個存儲過程
20
db.ExecuteNonQuery(CommandType.StoredProcedure,"InserOrders");
21
db.ExecuteDataSet(CommandType.StoredProcedure,"UpdateProducts");
22
23
///執(zhí)行完成后提交事務(wù)
24
Idbtran.Commit();
25
}
26
catch
27
{
28
///回滾事務(wù)
29
Idbtran.Rollback();
30
}
31
finally
32
{
33
///關(guān)閉連接
34
Idbconn.Close();
35
}
36
}
37
38
}
/// <summary>2
/// 利用事務(wù)更改數(shù)據(jù)3
/// </summary>4
private void ExecuteUseTran()5
{6
///創(chuàng)建數(shù)據(jù)庫實(shí)例7
Database db = DatabaseFactory.CreateDatabase("NorthWind");8

9
using(IDbConnection Idbconn = db.GetConnection())10
{ 11
///打開連接12
Idbconn.Open();13
14
///創(chuàng)建事務(wù)15
IDbTransaction Idbtran = Idbconn.BeginTransaction();16

17
try18
{ 19
///執(zhí)行兩個存儲過程20
db.ExecuteNonQuery(CommandType.StoredProcedure,"InserOrders");21
db.ExecuteDataSet(CommandType.StoredProcedure,"UpdateProducts");22
23
///執(zhí)行完成后提交事務(wù)24
Idbtran.Commit();25
}26
catch27
{ 28
///回滾事務(wù)29
Idbtran.Rollback();30
}31
finally32
{33
///關(guān)閉連接34
Idbconn.Close();35
}36
}37

38
}三. 加密連接字符串:
1. 創(chuàng)建一個加密的Stored Provider:
2. 創(chuàng)建新的加密算法:
3. 選擇加密算法:
4. 創(chuàng)建加密密鑰:
5. 保存加密密鑰的保存文件,該文件要小心保存:
6. 指定加密的部分:
這樣我們看到,在配置文件里面的內(nèi)容變成了亂碼。
總結(jié):關(guān)于數(shù)據(jù)訪問應(yīng)用程序塊的進(jìn)階篇就寫到這里了,希望對初學(xué)企業(yè)庫的朋友有所幫助![]()
支持TerryLee的創(chuàng)業(yè)產(chǎn)品Worktile
Worktile,新一代簡單好用、體驗(yàn)極致的團(tuán)隊協(xié)同、項目管理工具,讓你和你的團(tuán)隊隨時隨地一起工作。完全免費(fèi),現(xiàn)在就去了解一下吧。
https://worktile.com
Worktile,新一代簡單好用、體驗(yàn)極致的團(tuán)隊協(xié)同、項目管理工具,讓你和你的團(tuán)隊隨時隨地一起工作。完全免費(fèi),現(xiàn)在就去了解一下吧。
https://worktile.com



浙公網(wǎng)安備 33010602011771號