首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我的数据访问函数库的源代码(四)—— 存储过程部分,包括存储过程的参数的封装

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

作者头像
用户1174620
发布2018-02-07 16:26:13
9850
发布2018-02-07 16:26:13
举报

/* 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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2006-08-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档