zoukankan      html  css  js  c++  java
  • 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<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 轻量的数据访问框架 -- 序 
  • 相关阅读:
    linux下创建virtualenv时指定python版本
    Centos7系统如何不重启系统识别新添加的硬盘?
    centos7系统下hostname解析
    Linux之shell脚本for、while、case语句的高级用法
    Linux自制编译内核
    Centos7系统详细的启动流程
    cpio的用法
    Linux之删除带有空格的文件(而不是目录)
    Linux之特殊的环境变量IFS以及如何删除带有空格的目录
    zabbix使用自定义脚本监控内存
  • 原文地址:https://www.cnblogs.com/zhuweisky/p/682539.html
Copyright © 2011-2022 走看看