(完全限定類名:
DataRabbit.Relation.ISPAccesser
)
雖然 IRelationAccesser 可以調(diào)用一些不含out參數(shù)的存儲(chǔ)過(guò)程,但是在DataRabbit中調(diào)用存儲(chǔ)過(guò)程最好是通過(guò)ISPAccesser接口來(lái)進(jìn)行。
存儲(chǔ)過(guò)程不僅可以有返回值,還可以有[in,out]參數(shù),在對(duì)存儲(chǔ)過(guò)程的調(diào)用進(jìn)行封裝之前,首先必須抽象存儲(chǔ)過(guò)程的參數(shù)表示。DataRabbit使用 SPParameter 來(lái)表示存儲(chǔ)過(guò)程的參數(shù)。
注意,Name屬性表示參數(shù)名,該參數(shù)名不需要帶前綴(如"@"),DataRabbit在調(diào)用存儲(chǔ)過(guò)程時(shí)會(huì)依據(jù)數(shù)據(jù)庫(kù)的類型自動(dòng)為其添加合適的參數(shù)前綴。
我們可以從DataRabbit的入口點(diǎn)IDataAccesser中獲取ISPAccesser引用:
ISPAccesser接口中提供了兩個(gè)方法以實(shí)現(xiàn)對(duì)存儲(chǔ)過(guò)程的調(diào)用,其定義如下:
假設(shè),我們現(xiàn)在要調(diào)用 復(fù)制SqlServer數(shù)據(jù)庫(kù) 一文中描述的存儲(chǔ)過(guò)程,可以這樣做:
轉(zhuǎn)到: DataRabbit 輕量的數(shù)據(jù)訪問(wèn)框架 -- 序
雖然 IRelationAccesser 可以調(diào)用一些不含out參數(shù)的存儲(chǔ)過(guò)程,但是在DataRabbit中調(diào)用存儲(chǔ)過(guò)程最好是通過(guò)ISPAccesser接口來(lái)進(jìn)行。
存儲(chǔ)過(guò)程不僅可以有返回值,還可以有[in,out]參數(shù),在對(duì)存儲(chǔ)過(guò)程的調(diào)用進(jìn)行封裝之前,首先必須抽象存儲(chǔ)過(guò)程的參數(shù)表示。DataRabbit使用 SPParameter 來(lái)表示存儲(chǔ)過(guò)程的參數(shù)。

注意,Name屬性表示參數(shù)名,該參數(shù)名不需要帶前綴(如"@"),DataRabbit在調(diào)用存儲(chǔ)過(guò)程時(shí)會(huì)依據(jù)數(shù)據(jù)庫(kù)的類型自動(dòng)為其添加合適的參數(shù)前綴。
我們可以從DataRabbit的入口點(diǎn)IDataAccesser中獲取ISPAccesser引用:
ISPAccesser
spAccesser
=
dataAccesser.GetSPAccesser(
null
);
ISPAccesser接口中提供了兩個(gè)方法以實(shí)現(xiàn)對(duì)存儲(chǔ)過(guò)程的調(diào)用,其定義如下:
public
interface
ISPAccesser:ITransactionAccesser
{
/// <summary>
/// ExcuteNoneQuery執(zhí)行命令式的存儲(chǔ)過(guò)程,可以輸出out參數(shù)。
/// </summary>
/// <paramname="spName"> 存儲(chǔ)過(guò)程名稱 </param>
/// <paramname="parms"> 所有的[in]和[in,out]參數(shù) </param>
/// <paramname="outVals"> out參數(shù)的"名稱-值"字典 </param>
void ExcuteNoneQuery( string spName, IList < SPParameter > parms, out IDictionary < string , object > outVals);
/// <summary>
/// ExcuteNoneQuery執(zhí)行查詢式的存儲(chǔ)過(guò)程,可以輸出out參數(shù)。
/// </summary>
/// <paramname="spName"> 存儲(chǔ)過(guò)程名稱 </param>
/// <paramname="parms"> 所有的[in]和[in,out]參數(shù) </param>
/// <paramname="outVals"> out參數(shù)的"名稱-值"字典 </param>
DataSet ExcuteQuery( string spName, IList < SPParameter > parms, out IDictionary < string , object > outVals);
}
代碼的注釋已經(jīng)很好的解釋了一切,就不再贅言了。
{
/// <summary>
/// ExcuteNoneQuery執(zhí)行命令式的存儲(chǔ)過(guò)程,可以輸出out參數(shù)。
/// </summary>
/// <paramname="spName"> 存儲(chǔ)過(guò)程名稱 </param>
/// <paramname="parms"> 所有的[in]和[in,out]參數(shù) </param>
/// <paramname="outVals"> out參數(shù)的"名稱-值"字典 </param>
void ExcuteNoneQuery( string spName, IList < SPParameter > parms, out IDictionary < string , object > outVals);
/// <summary>
/// ExcuteNoneQuery執(zhí)行查詢式的存儲(chǔ)過(guò)程,可以輸出out參數(shù)。
/// </summary>
/// <paramname="spName"> 存儲(chǔ)過(guò)程名稱 </param>
/// <paramname="parms"> 所有的[in]和[in,out]參數(shù) </param>
/// <paramname="outVals"> out參數(shù)的"名稱-值"字典 </param>
DataSet ExcuteQuery( string spName, IList < SPParameter > parms, out IDictionary < string , object > outVals);
}
假設(shè),我們現(xiàn)在要調(diào)用 復(fù)制SqlServer數(shù)據(jù)庫(kù) 一文中描述的存儲(chǔ)過(guò)程,可以這樣做:
IList
<
SPParameter
>
paraList
=
new
List
<
SPParameter
>
();
SPParameter para1 = new SPParameter ( " newDbName " ,ParameterDirection.Input, " EASNew9 " );
paraList.Add(para1);
SPParameter para2 = new SPParameter ( " dbDataDirPath " ,ParameterDirection.Input, @" C:/ProgramFiles/MicrosoftSQLServer/MSSQL/Data/ " );
paraList.Add(para2);
SPParameter para3 = new SPParameter ( " soureDbName " ,ParameterDirection.Input, " AutoSchedulerSystem " );
paraList.Add(para3);
SPParameter para4 = new SPParameter ( " soureBackupFilePATH " ,ParameterDirection.Input, @" d:/sqlDatabase/AutoSchedulerSystem2 " );
paraList.Add(para4);
IDictionary < string , object > outParas = null ;
spAccesser .ExcuteNoneQuery( " CopyDB " ,paraList, out outParas);
SPParameter para1 = new SPParameter ( " newDbName " ,ParameterDirection.Input, " EASNew9 " );
paraList.Add(para1);
SPParameter para2 = new SPParameter ( " dbDataDirPath " ,ParameterDirection.Input, @" C:/ProgramFiles/MicrosoftSQLServer/MSSQL/Data/ " );
paraList.Add(para2);
SPParameter para3 = new SPParameter ( " soureDbName " ,ParameterDirection.Input, " AutoSchedulerSystem " );
paraList.Add(para3);
SPParameter para4 = new SPParameter ( " soureBackupFilePATH " ,ParameterDirection.Input, @" d:/sqlDatabase/AutoSchedulerSystem2 " );
paraList.Add(para4);
IDictionary < string , object > outParas = null ;
spAccesser .ExcuteNoneQuery( " CopyDB " ,paraList, out outParas);
轉(zhuǎn)到: DataRabbit 輕量的數(shù)據(jù)訪問(wèn)框架 -- 序
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
