C# 执行存储过程 基类

适用于 Web 项目

using  System; 
using  System.Data; 
using  System.Data.SqlClient; 
using  System.Configuration; 
namespace  Prj.DbBase

   
/// <summary> 
   
/// 通用的数据库处理类,通过ado.net与数据库连接 
   
/// </summary> 

   public class Database : IDisposable 
   

      
// 连接数据源 
      private SqlConnection con; 
       
      
/// <summary> 
      
/// 执行存储过程 
      
/// </summary> 
      
/// <param name="procName">存储过程的名称</param> 
      
/// <returns>返回存储过程返回值</returns> 

      public int RunProc(string procName)  
      

         SqlCommand cmd 
= CreateCommand(procName, null); 
         cmd.ExecuteNonQuery(); 
         
this.Close(); 
         
return (int)cmd.Parameters["ReturnValue"].Value; 
      }
 
      
/// <summary> 
      
/// 执行存储过程 
      
/// </summary> 
      
/// <param name="procName">存储过程名称</param> 
      
/// <param name="prams">存储过程所需参数</param> 
      
/// <returns>返回存储过程返回值</returns> 

      public int RunProc(string procName, SqlParameter[] prams)  
      

         SqlCommand cmd 
= CreateCommand(procName, prams); 
         cmd.ExecuteNonQuery(); 
         
this.Close(); 
         
return (int)cmd.Parameters["ReturnValue"].Value; 
      }
 
      
/// <summary> 
      
/// 执行存储过程 
      
/// </summary> 
      
/// <param name="procName">存储过程的名称</param> 
      
/// <param name="dataReader">返回存储过程返回值</param> 

      public void RunProc(string procName, out SqlDataReader dataReader)  
      

         SqlCommand cmd 
= CreateCommand(procName, null); 
         dataReader 
= cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); 
         
//return (int)cmd.Parameters["ReturnValue"].Value; 
      }
 
      
/// <summary> 
      
/// 执行存储过程 
      
/// </summary> 
      
/// <param name="procName">存储过程的名称</param> 
      
/// <param name="prams">存储过程所需参数</param> 
      
/// <param name="dataReader">存储过程所需参数</param> 

      public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader)  
      

         SqlCommand cmd 
= CreateCommand(procName, prams); 
         dataReader 
= cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); 
         
//return (int)cmd.Parameters["ReturnValue"].Value; 
      }
 
       
      
/// <summary> 
      
/// 创建一个SqlCommand对象以此来执行存储过程 
      
/// </summary> 
      
/// <param name="procName">存储过程的名称</param> 
      
/// <param name="prams">存储过程所需参数</param> 
      
/// <returns>返回SqlCommand对象</returns> 

      private SqlCommand CreateCommand(string procName, SqlParameter[] prams)  
      

         
// 确认打开连接 
         Open(); 
          
         SqlCommand cmd 
= new SqlCommand(procName, con); 
         cmd.CommandType 
= CommandType.StoredProcedure; 
         
// 依次把参数传入存储过程 
         if (prams != null)  
         

            
foreach (SqlParameter parameter in prams) 
               cmd.Parameters.Add(parameter); 
         }
 
          
         
// 加入返回参数 
         cmd.Parameters.Add( 
            
new SqlParameter("ReturnValue", SqlDbType.Int, 4
            ParameterDirection.ReturnValue, 
false00
            
string.Empty, DataRowVersion.Default, null)); 
         
return cmd; 
      }
 
      
/// <summary> 
      
/// 打开数据库连接. 
      
/// </summary> 

      private void Open()  
      

         
// 打开数据库连接 
         if (con == null)  
         

            con 
= new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);             
         }
             
         
if(con.State ==System.Data.ConnectionState.Closed) 
            con.Open(); 
      }
 
      
/// <summary> 
      
/// 关闭数据库连接 
      
/// </summary> 

      public void Close()  
      

         
if (con != null
            con.Close(); 
      }
 
      
/// <summary> 
      
/// 释放资源 
      
/// </summary> 

      public void Dispose()  
      

         
// 确认连接是否已经关闭 
         if (con != null)  
         

            con.Dispose(); 
            con 
= null
         }
             
      }
 
      
/// <summary> 
      
/// 传入输入参数 
      
/// </summary> 
      
/// <param name="ParamName">存储过程名称</param> 
      
/// <param name="DbType">参数类型</param></param> 
      
/// <param name="Size">参数大小</param> 
      
/// <param name="Value">参数值</param> 
      
/// <returns>新的 parameter 对象</returns> 

      public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value)  
      

         
return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value); 
      }
       
      
/// <summary> 
      
/// 传入返回值参数 
      
/// </summary> 
      
/// <param name="ParamName">存储过程名称</param> 
      
/// <param name="DbType">参数类型</param> 
      
/// <param name="Size">参数大小</param> 
      
/// <returns>新的 parameter 对象</returns> 

      public SqlParameter MakeOutParam(string ParamName, SqlDbType DbType, int Size)  
      

         
return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null); 
      }
       
      
/// <summary> 
      
/// 传入返回值参数 
      
/// </summary> 
      
/// <param name="ParamName">存储过程名称</param> 
      
/// <param name="DbType">参数类型</param> 
      
/// <param name="Size">参数大小</param> 
      
/// <returns>新的 parameter 对象</returns> 

      public SqlParameter MakeReturnParam(string ParamName, SqlDbType DbType, int Size)  
      

         
return MakeParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null); 
      }
    
    
      
/// <summary> 
      
/// 生成存储过程参数 
      
/// </summary> 
      
/// <param name="ParamName">存储过程名称</param> 
      
/// <param name="DbType">参数类型</param> 
      
/// <param name="Size">参数大小</param> 
      
/// <param name="Direction">参数方向</param> 
      
/// <param name="Value">参数值</param> 
      
/// <returns>新的 parameter 对象</returns> 

      public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)  
      

         SqlParameter param; 
         
if(Size > 0
            param 
= new SqlParameter(ParamName, DbType, Size); 
         
else 
            param 
= new SqlParameter(ParamName, DbType); 
         param.Direction 
= Direction; 
         
if (!(Direction == ParameterDirection.Output && Value == null)) 
            param.Value 
= Value; 
         
return param; 
      }
 
   }
 
}
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值