C#操作SQL SERVER数据库通用类

/* 
 *                                                                说明 
 * 功能说明:数据访问封装。所有数据都要通过这个类定义的dbConnection访问数据库。同时,定义了通用的cmd,以及cmd常用的访问存储过程的方法RunPro 
 *    
 *     
 *    
 */ 
 
using System; 
using System.Data; 
using System.Data.SqlClient; 
 
 
namespace insurer 
{ 
  /// <summary> 
  /// DataAccess 的摘要说明。 
  /// </summary> 
  public class DataAccess 
  { 
    private readonly string SQLCONNECTSTR = "server=(local);uid=sa;pwd=lwrong;database=insurer"; 
    private SqlConnection dbConnection; 
    private readonly string RETUENVALUE = "RETURNVALUE";    
 
 
    //判断要不要启动事务 
                private bool startrans = false; 
 
    //为解决多笔数据导入的问题,特添加的事务处理属性 
    private SqlTransaction trans = null; 
 
                 
    //定义是否启动事务属性 
    public bool StartTrans 
    { 
      get 
      { 
        return startrans; 
      } 
      set 
      { 
        startrans = value; 
      } 
    } 
 
 
    //定义事务 
    public SqlTransaction Trans 
    { 
      get 
      { 
        return trans; 
      } 
      set 
      { 
        if (value != null) 
        { 
          trans = value; 
        } 
      } 
    } 
 
    //创建打开dbConnection对象 
    public void OpenConnection() 
    { 
      if ( dbConnection == null ) 
      { 
        dbConnection = new SqlConnection(SQLCONNECTSTR); 
      } 
 
      if ( dbConnection.State == ConnectionState.Closed ) 
      { 
        try 
        { 
          dbConnection.Open(); 
        } 
        catch(Exception ex) 
        { 
          SystemError.SystemLog(ex.Message); 
        } 
        finally 
        { 
        } 
      } 
    } 
 
    //释放dbConnection对象 
    public void CloseConnection() 
    { 
      if (dbConnection != null) 
      { 
        if (dbConnection.State == ConnectionState.Open) 
        { 
          dbConnection.Dispose(); 
          dbConnection = null; 
        } 
      } 
    } 
 
 
    // 
 
    //创建cmd,注意dbconnection在该函数中创建,但没有在这函数中释放。 
    //在正确的面向对象设计方法中,对象应该是谁创建,谁就应该负责释放。按这个观点,这个过程有些不安全!!!! 
        private SqlCommand CreateCommand(string ProName,SqlParameter[] prams) 
    { 
      OpenConnection(); 
      SqlCommand cmd = new SqlCommand(ProName,dbConnection); 
      cmd.CommandType = CommandType.StoredProcedure; 
 
 
      //如果进行事务处理,那么对cmd的Transaction的事务赋值 
      if (StartTrans) 
      { 
        cmd.Transaction = Trans; 
      } 
 
 
      if ( prams != null) 
      { 
        foreach(SqlParameter parameter in prams) 
        { 
          cmd.Parameters.Add(parameter); 
        } 
      } 
 
      //cmd.Parameters.Add( 
 
      return cmd; 
 
    } 
 
 
    /// <summary> 
    /// 创建cmd,并执行相应的操作。 然后释放cmd! 
    ///    
    /// 该函数是执行cmd没有返回值,且没有参数的方法。 
    /// </summary> 
    /// <param name="ProName"></param> 
    public bool RunProc(string ProName) 
    { 
      SqlCommand cmd = CreateCommand(ProName,null); 
 
      bool k = false; 
      try 
      { 
        k = (bool)cmd.ExecuteScalar(); 
      } 
      catch(Exception ex) 
      { 
        SystemError.SystemLog(ex.Message); 
      } 
      finally 
      { 
        cmd.Dispose(); 
      } 
      return k; 
 
    } 
 
    /// <summary> 
    /// 创建cmd,并执行相应的操作。 然后释放cmd! 
    ///    
    /// 该函数是执行cmd没有返回值,但有参数的方法。 
    /// </summary> 
    /// <param name="ProName"></param> 
    /// <param name="prams"></param> 
    public bool RunProc(string ProName,SqlParameter[] prams) 
    { 
      SqlCommand cmd = CreateCommand(ProName,prams); 
 
      bool k = false; 
      try 
      { 
        k = (bool) cmd.ExecuteScalar(); 
      } 
      catch(Exception ex) 
      { 
        SystemError.SystemLog(ex.Message); 
      } 
      finally 
      {    
        cmd.Dispose(); 
        //Close(); 
      } 
      return k; 
    } 
 
    /// <summary> 
    /// 创建cmd,并执行相应的操作。 然后释放cmd! 
    ///    
    /// 该函数是执行cmd带有返回值,但没有参数的方法。    
    /// </summary> 
    /// <param name="ProName"></param> 
    /// <param name="dataReader"></param> 
    public void RunProc(string ProName,out SqlDataReader dataReader) 
    { 
      SqlCommand cmd = CreateCommand(ProName,null); 
      dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
      try 
      { 
         
      } 
      catch(Exception ex) 
      { 
        SystemError.SystemLog(ex.Message); 
      } 
      finally 
      { 
        cmd.Dispose(); 
      } 
    } 
 
    /// <summary> 
                /// 创建cmd,并执行相应的操作。 然后释放cmd! 
    ///    
    /// 该函数是执行cmd带有返回值,且有参数的方法。 
    /// </summary> 
    /// <param name="ProName"></param> 
    /// <param name="prams"></param> 
    /// <param name="dataReader"></param> 
    public void RunProc(string ProName,SqlParameter[] prams,out SqlDataReader dataReader) 
    { 
      SqlCommand cmd = CreateCommand(ProName,prams); 
      dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
      try 
      { 
         
      } 
      catch(Exception ex) 
      { 
        SystemError.SystemLog(ex.Message); 
      } 
      finally 
      { 
        cmd.Dispose(); 
      } 
    } 
 
 
    /// <summary> 
    /// 创建cmd的参数 
    /// 该方法的思路就是按条件生成一个SqlParameter对象。 
    /// 生成对象后,再给对象赋相应的返回值类型 
    /// </summary> 
    /// <param name="ParamName"></param> 
    /// <param name="DbType"></param> 
    /// <param name="size"></param> 
    /// <param name="direction"></param> 
    /// <param name="Value"></param> 
    /// <returns></returns> 
    public SqlParameter CreateParam(string ParamName, SqlDbType DbType, int 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; 
 
      param.Value = Value; 
 
      return param; 
    } 
 
    /// <summary> 
    /// 创建cmd的输入参数 
    /// </summary> 
    /// <param name="ParamName"></param> 
    /// <param name="DbType"></param> 
    /// <param name="size"></param> 
    /// <param name="Value"></param> 
    /// <returns></returns> 
    public SqlParameter CreateInParam(string ParamName, SqlDbType DbType, int size, object Value) 
    { 
      return CreateParam(ParamName,DbType,size,ParameterDirection.Input,Value); 
    } 
 
    /// <summary> 
    /// 创建cmd的输出参数 
    /// </summary> 
    /// <param name="ParamName"></param> 
    /// <param name="DbType"></param> 
    /// <param name="size"></param> 
    /// <returns></returns> 
    public SqlParameter CreateOutParam(string ParamName, SqlDbType DbType, int size) 
    { 
      return CreateParam(ParamName,DbType,size,ParameterDirection.Output,null); 
    } 
 
    /// <summary> 
    /// 创建cmd带有返回值的参数 
    /// </summary> 
    /// <param name="ParamName"></param> 
    /// <param name="DbType"></param> 
    /// <param name="size"></param> 
    /// <returns></returns> 
    public SqlParameter CreateReturnParam(string ParamName,SqlDbType DbType, int size) 
    { 
      return CreateParam(ParamName,DbType,size,ParameterDirection.ReturnValue,null); 
    } 
 
 
    //开始一个事务 
    public void BeginTrans() 
    { 
      OpenConnection(); 
 
      Trans = dbConnection.BeginTransaction(IsolationLevel.Serializable); 
    } 
 
 
    public void Commit() 
    { 
      if (Trans != null) 
      { 
        Trans.Commit(); 
      } 
    } 
 
    public void Rollback() 
    { 
      if (Trans != null) 
      { 
        Trans.Rollback(); 
      } 
    } 
  } 
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值