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

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