DataRabbit 轻量的数据访问框架(07) -- ISPAccesser-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

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

简介: (完全限定类名:DataRabbit.Relation.ISPAccesser)       虽然IRelationAccesser可以调用一些不含out参数的存储过程,但是在DataRabbit中调用存储过程最好是通过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<stringobject> 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<stringobject> 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
<stringobject> outParas = null;

                spAccesser
.ExcuteNoneQuery("CopyDB", paraList, out outParas);


转到:DataRabbit 轻量的数据访问框架 -- 序 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章
最新文章
相关文章