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

  在前段时间写的文章<< C#中读取文本文件导入SQL数据库解决方法>>一文中,文章链接: [url]http://alligator.blog.51cto.com/36993/102446[/url]。描述了如何处理具有固定格式文本文件的处理方式,并提供了操作文本文件的源代码供参考。有朋友通过留言希望提供数据操作类,本想重新整理后再放上来,但最近事情太多,精力有限,直接把源码放上来,有兴趣的朋友请参考!
      
/*
*                                                                说明
* 功能说明:数据访问封装。所有数据都要通过这个类定义的dbConnection访问数据库。同时,定义了通用的cmd,以及cmd常用的访问存储过程的方法RunPro
*    
*    
* 作者: RogerWang
*    
* 创建日期:2006-02-15
*    
*/


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();
      }
    }
  }
}

本文出自 “我儿子真帅!” 博客,转载请与作者联系!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值