我的数据访问函数库的源代码(四)—— 存储过程部分,包括存储过程的参数的封装

/* 2008 4 25 更新 */

我的数据访问函数库的源码。整个类有1400行,原先就是分开来写的,现在更新后还是分开来发一下吧。

第四部分:存储过程部分,包括存储过程的参数

,主要是对存储过程的参数的封装。

//存储过程的参数部分

        #region 存储过程的参数部分——清除和添加参数



        #region 清除参数

        /// <summary>

        /// 清除SqlCommand的存储过程的参数。

        /// </summary>

        public void ClearParameter()

        {cm.Parameters.Clear();}

        #endregion

    

        //int:        tinyint、smallint

        //bigint:

        //bool:    bit

        //double:    float、real

        //string:    char、nchar、varchar、nvarchar、uniqueidentifier、smalldatetime、datetime

        //string:    ntext、text



        //decimal:从 -10^38 +1 到 10^38 –1 的固定精度和小数位的数字数据。

        //numeric:功能上等同于 decimal。

        //decimal:    smallmoney、money



        //二进制

        //            binary、varbinary、image



        #region 输入型的参数 int 、double、decimal、nvarChar、、、

        #region int

        /// <summary>

        /// 添加int型的参数。

        /// </summary>

        /// <param name="ParameterName">参数名称。比如 @UserName</param>

        /// <param name="ParameterValue">参数值</param>

        public void addNewParameter(string ParameterName,int ParameterValue)

        {        

            cm.Parameters.Add(ParameterName,SqlDbType.Int,);            //添加存储过程的参数

            cm.Parameters[ParameterName].Value=ParameterValue;            //负值

            //设置方向取默认值——输入

        }

        #endregion 

    

        #region double

        /// <summary>

        /// 添加小数参数,double

        /// </summary>

        /// <param name="ParameterName">参数名称。比如 @UserName</param>

        /// <param name="ParameterValue">参数值</param>

        public void addNewParameter(string ParameterName,double ParameterValue )

        {        

            cm.Parameters.Add(ParameterName,SqlDbType.Float );            //添加存储过程的参数

            cm.Parameters[ParameterName].Value=ParameterValue;            //负值

        }

        #endregion 

    

        #region decimal

        /// <summary>

        /// 添加金额参数,方向是输入(input)。decimal

        /// </summary>

        /// <param name="ParameterName">参数名称。比如 @UserName</param>

        /// <param name="ParameterValue">参数值</param>

        public void addNewParameter(string ParameterName,decimal ParameterValue )

        {        

            cm.Parameters.Add(ParameterName,SqlDbType.Decimal);            //添加存储过程的参数

            cm.Parameters[ParameterName].Value=ParameterValue;            //负值

        }

        #endregion 

    

        #region nvarChar

        /// <summary>

        /// 添加nvarChar型的参数。方向是输入(input)

        /// </summary>

        /// <param name="ParameterName">参数名称。比如 @UserName</param>

        /// <param name="ParameterValue">参数值</param>

        /// <param name="size">参数大小</param>

        public void addNewParameter(string ParameterName,string ParameterValue,int size)

        {        

            cm.Parameters.Add(ParameterName,SqlDbType.NVarChar,size);            //添加存储过程的参数

            cm.Parameters[ParameterName].Value=ParameterValue;            //负值

        }

        #endregion 

    

        #region nText

        /// <summary>

        /// 添加nText型的参数。方向是输入(input)

        /// </summary>

        /// <param name="ParameterName">参数名称。比如 @UserName</param>

        /// <param name="ParameterValue">参数值</param>

        public   void addNewParameter(string ParameterName,string ParameterValue)

        {        

            cm.Parameters.Add(ParameterName,SqlDbType.NText);            //添加存储过程的参数

            cm.Parameters[ParameterName].Value=ParameterValue;            //负值

        }



        #endregion 

    

        #region bit

        /// <summary>

        /// 添加bit型的参数。方向是输入(input)

        /// </summary>

        /// <param name="ParameterName">参数名称。比如 @UserName</param>

        /// <param name="ParameterValue">参数值</param>

        public   void addNewParameter(string ParameterName,bool ParameterValue)

        {        

            cm.Parameters.Add(ParameterName,SqlDbType.Bit);            //添加存储过程的参数

            cm.Parameters[ParameterName].Value=ParameterValue;            //负值

        }

        #endregion 

    

        #endregion



        #region 输出型的参数 

        

        /// <summary>

        /// 添加输出型的参数。只支持常用的几个参数类型,如果需要可以扩充。

        /// </summary>

        /// <param name="ParameterName">参数名称。比如 @UserName</param>

        /// <param name="ParameterValue">参数的类型</param>

        public void addNewParameter(string ParameterName,HBS.ParameterKind kind)

        {

            switch(kind)

            {

                case ParameterKind.Int :

                    cm.Parameters.Add(ParameterName,SqlDbType.Int);            //添加存储过程的参数

                    break;

                case ParameterKind.Double:

                    cm.Parameters.Add(ParameterName,SqlDbType.Float);            //添加存储过程的参数

                    break;

                case ParameterKind.Decimal :

                    cm.Parameters.Add(ParameterName,SqlDbType.Decimal);            //添加存储过程的参数

                    break;

                case ParameterKind.NVarChar :

                    cm.Parameters.Add(ParameterName,SqlDbType.NVarChar,);            //添加存储过程的参数

                    break;

                case ParameterKind.Bit :

                    cm.Parameters.Add(ParameterName,SqlDbType.Bit);            //添加存储过程的参数

                    break;

            }

            cm.Parameters[ParameterName].Direction=    ParameterDirection.Output;        //设置方向

        }

        

        #endregion



        #endregion



        #region 存储过程的参数部分——取参数的返回值



        /// <summary>

        /// 按序号返回参数值,一般在执行完存储过程后使用

        /// </summary>

        /// <param name="ParameterIndex">序号</param>

        /// <returns>返回参数的内容</returns>

        public string getParameter(int ParameterIndex)

        {        

            return cm.Parameters[ParameterIndex].Value.ToString();

        }



        /// <summary>

        /// 按名称返回参数值,一般在执行完存储过程后使用

        /// </summary>

        /// <param name="ParameterName">参数名称。比如 @UserName</param>

        /// <returns>返回参数的内容</returns>

        public   string getParameter(string ParameterName)

        {        

            return cm.Parameters[ParameterName].Value.ToString();

        }

        #endregion



        #region 存储过程的参数部分——修改参数值

        /// <summary>

        /// 按序号修改参数值,一般在一次添加多条记录时用。

        /// </summary>

        /// <param name="ParameterIndex">序号</param>

        public void setParameter(int ParameterIndex,string parameterValue)

        {    cm.Parameters[ParameterIndex].Value = parameterValue;}



        /// <summary>

        /// 按名称修改参数值,一般在一次添加多条记录时用

        /// </summary>

        /// <param name="ParameterName">参数名称。比如 @UserName</param>

        public void setParameter(string ParameterName,string parameterValue)

        {    cm.Parameters[ParameterName].Value = parameterValue;}

        #endregion



        //存储过程部分

        #region 运行存储过程返回记录(DataSet、DataTable、不返回记录集)



        /// <summary>

        /// 运行存储过程返回DataSet。DataSet里面可以是多个表(DateTable)

        /// </summary>

        /// <param name="StoredProcedureName">存储过程名称</param>

        /// <returns>返回DataSet</returns>

        #region 函数实现 — — RunStoreDataSet

        public DataSet RunStoreDataSet(string StoredProcedureName)

        {    

            SetCommand(StoredProcedureName,);        //设置command

            SqlDataAdapter da = new SqlDataAdapter(cm);

            try

            {

                DataSet DS = new DataSet();

                da.Fill(DS);

                return DS;

            }

            catch(Exception ex)

            {

                SetErrorMsg("RunStoreDataSet",StoredProcedureName,ex.Message );    //处理错误

                return null;

            }

            finally

            {

                da.Dispose();

            }

        }

        #endregion



        /// <summary>

        /// 运行存储过程返回DataTable。

        /// </summary>

        /// <param name="StoredProcedureName">存储过程名称</param>

        /// <returns>返回DataTable</returns>

        #region 函数实现 — — RunStoreDataTable

        public DataTable RunStoreDataTable(string StoredProcedureName)

        {    

            SetCommand(StoredProcedureName,);        //设置command

            SqlDataAdapter da = new SqlDataAdapter(cm);

            try

            {

                DataTable dt = new DataTable();

                da.Fill(dt);

                return dt;

            }

            catch(Exception ex)

            {

                SetErrorMsg("RunStoreDataTable",StoredProcedureName,ex.Message );    //处理错误

                return null;

            }

            finally

            {

                da.Dispose();

            }

        }

        #endregion

        

        /// <summary>

        /// 运行存储过程 不返回记录集,用于添加、修改、删除等操作

        /// </summary>

        /// <param name="ParameterName">存储过程名称</param>

        /// <returns></returns>

        public void RunStore(string StoredProcedureName)

        {    

            SetCommand(StoredProcedureName,);        //设置command

            try

            {

                if (cm.Connection.State == ConnectionState.Broken || cm.Connection.State == ConnectionState.Closed )

                    cm.Connection.Open();

                cm.ExecuteNonQuery();

            }

            catch(Exception ex)

            {

                SetErrorMsg("RunStore",StoredProcedureName,ex.Message );    //处理错误

            }

            finally

            {

                if (!isUseTrans)

                    cm.Connection.Close();

            }



        }



        #endregion

下载全部源文件。 

http://www.cnblogs.com/jyk/archive/2008/04/25/1170979.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Code_iOS

数据结构:栈与队列

工程代码 Github: Data_Structures_C_Implemention -- Stack & Queue

14230
来自专栏一枝花算不算浪漫

[Java Collection]List分组之简单应用.

34350
来自专栏二进制文集

JDK源码分析 异常

对于JDK源码分析的文章,仅仅记录我认为重要的地方。源码的细节实在太多,不可能面面俱到地写清每个逻辑。所以我的JDK源码分析,着重在JDK的体系架构层面,具体源...

28440
来自专栏大内老A

Dora.Interception, 为.NET Core度身打造的AOP框架[4]:演示几个典型应用

为了帮助大家更深刻地认识Dora.Interception,并更好地将它应用到你的项目中,我们通过如下几个简单的实例来演示几个常见的AOP应用在Dora.Int...

43660
来自专栏蘑菇先生的技术笔记

探索c#之不可变数据类型

21240
来自专栏程序员的SOD蜜

在C++中反射调用.NET(二) 定义数据接口 绑定委托方法 使用SOD DTO 对象 将.NET对象转换到C++结构体为何不使用序列化的问题

反射调用返回复杂对象的.NET方法 定义数据接口 上一篇在C++中反射调用.NET(一)中,我们简单的介绍了如何使用C++/CLI并且初步使用了反射调用.NET...

22570
来自专栏xdecode

Spring之AOP

之前在另外一篇博文里介绍过AOP的概念, 这边不在赘述, 可以参考 AOP与动态代理 本文主要介绍Spring中AOP的应用. 切入点: 具体实现类的方法 ...

210100
来自专栏分布式系统和大数据处理

基于业务对象(列表)的排序

在上一篇文章 基于业务对象的筛选 中,我们讨论了如何实现Predicate<T>(T object)委托,自定义DateFilter 类来对业务对象进行筛选。与...

11220
来自专栏逸鹏说道

C# 温故而知新:Stream篇(—)

目录: 什么是Stream? 什么是字节序列? Stream的构造函数 Stream的重要属性及方法 Stream的示例 Stream异步读写 Stream ...

35590
来自专栏跟着阿笨一起玩NET

C# 反射 通过类名创建类实例

“反射”其实就是利用程序集的元数据信息。 反射可以有很多方法,编写程序时请先导入 System.Reflection 命名空间。

19210

扫码关注云+社区

领取腾讯云代金券