DataRabbit 轻量的数据访问框架(07) -- ISPAccesser

   (完全限定类名:DataRabbit.Relation.ISPAccesser) 
   
   虽然IRelationAccesser可以调用一些不含out参数的存储过程,但是在DataRabbit中调用存储过程最好是通过ISPAccesser接口来进行。
   存储过程不仅可以有返回值,还可以有[in,out]参数,在对存储过程的调用进行封装之前,首先必须抽象存储过程的参数表示。DataRabbit使用SPParameter来表示存储过程的参数。

   注意,Name属性表示参数名,该参数名不需要带前缀(如"@"),DataRabbit在调用存储过程时会依据数据库的类型自动为其添加合适的参数前缀。

    我们可以从DataRabbit的入口点IDataAccesser中获取ISPAccesser引用: 
   ISPAccesser spAccesser  =  dataAccesser.GetSPAccesser( null );

    ISPAccesser接口中提供了两个方法以实现对存储过程的调用,其定义如下:
    public   interface  ISPAccesser : ITransactionAccesser
    {
        
///   <summary>
        
///  ExcuteNoneQuery 执行命令式的存储过程,可以输出out参数。
        
///   </summary>
        
///   <param name="spName"> 存储过程名称 </param>
        
///   <param name="parms"> 所有的[in]和[in,out]参数 </param>
        
///   <param name="outVals"> out参数的"名称-值"字典 </param>
         void  ExcuteNoneQuery( string  spName, IList < SPParameter >  parms,  out  IDictionary < string object >  outVals);

        
///   <summary>
        
///  ExcuteNoneQuery 执行查询式的存储过程,可以输出out参数。
        
///   </summary>
        
///   <param name="spName"> 存储过程名称 </param>
        
///   <param name="parms"> 所有的[in]和[in,out]参数 </param>
        
///   <param name="outVals"> out参数的"名称-值"字典 </param>
        DataSet ExcuteQuery( string  spName, IList < SPParameter >  parms,  out  IDictionary < string object >  outVals);        
    }
   代码的注释已经很好的解释了一切,就不再赘言了。

   假设,我们现在要调用 复制SqlServer数据库 一文中描述的存储过程,可以这样做:
                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:\Program Files\Microsoft SQL Server\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);


转到: DataRabbit 轻量的数据访问框架 -- 序 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值