自己常用到的自定义公共类(已测试通过)

  using System;

  using System.Data;

  using System.Data.SqlClient;

  using System.Configuration;

  using System.IO;

  /*

  * AUTHOR:ZHANGLEI

  * CREATE DATE:2007.1.5

  * 功能:BLL层,实现了数据库操作的封装

  * 并且提供了足够的执行存储过程的参数组合

  * DESCRIPTION:本类中用到了方法重载

  * ExecuteDataSet方法在本类中实现了四次重载

  * */

  namespace job_17

  {

  /// <summary>

  /// job17 的摘要说明。

  /// </summary>

  public class job17

  {

  private readonly string P_Con=ConfigurationSettings.AppSettings["P_Con"].ToString();

  public job17()

  {

  //

  // TODO: 在此处添加构造函数逻辑

  //

  }

  #region "执行任意参数组合的存储过程"

  /// <summary>

  /// 命令准备操作,提供足够多的参数组合

  /// 本类中一个比较重要的方法

  /// </summary>

  public void preparecommand(SqlConnection myconn,SqlCommand mycomm,SqlTransaction trans,CommandType cmdType,string cmdText,SqlParameter[] param) //注意里面的参数

  {

  if (myconn.State!=ConnectionState.Open)

  {

  myconn.Open();

  }

  mycomm.Connection=myconn;

  mycomm.CommandText=cmdText;

  if (trans!=null)

  {

  mycomm.Transaction=trans;

  }

  mycomm.CommandType=cmdType;

  if (param!=null)

  {

  foreach(SqlParameter parameter in param)

  {

  mycomm.Parameters.Add(parameter);

  }

  }

  }

  /// <summary>

  /// 第一个返回DataSet类型的ExecuteDataSet方法

  /// </summary>

  public DataSet ExecuteDataSet(SqlConnection myconn,CommandType cmdType,string cmdText,SqlParameter[] commandpara)

  {

  SqlCommand mycomm=new SqlCommand();

  preparecommand(myconn,mycomm,(SqlTransaction)null,cmdType,cmdText,commandpara);

  SqlDataAdapter adpt=new SqlDataAdapter(mycomm); //调用上方的preparecommand方法

  DataSet ds=new DataSet();

  adpt.Fill(ds);

  mycomm.Parameters.Clear();

  return ds;

  }

  /// <summary>

  /// 第二个返回DataSet类型的ExecuteDataSet方法

  /// 是在第一个方法的基础上实现,实现了ExecuteDataSet方法的重载

  /// </summary>

  public DataSet ExecuteDataSet (string connstr,CommandType cmdType,string cmdText,SqlParameter[] cmdpara)//方法重载,在第一种的基础上重载,以便提供足够多的参数组合

  {

  using(SqlConnection myconn=new SqlConnection(connstr))

  {

  return ExecuteDataSet(myconn,cmdType,cmdText,cmdpara);

  }

  }

  /// <summary>

  /// 第三个返回DataSet类型的ExecuteDataSet方法

  /// 提供使用存储过程时不带参数的组合

  /// </summary>

  public DataSet ExecuteDataSet(SqlConnection myconn,CommandType cmdType,string cmdText)

  {

  return ExecuteDataSet(myconn,cmdType,cmdText,(SqlParameter[])null);

  }

  /// <summary>

  /// 第四个返回DataSet类型的ExecuteDataSet方法

  /// 提供使用存储过程时不带参数的组合

  /// </summary>

  public DataSet ExecuteDataSet (string connstr,CommandType cmdType,string cmdText)

  {

  return ExecuteDataSet(connstr,cmdType,cmdText,(SqlParameter[])null);

  }

  #endregion

  #region "执行返回结果的sql语句"

  /// <summary>

  /// 返回结果的类型为DataTable

  /// </summary>

  public DataTable ExecuteDataTablesql(string sql)

  {

  SqlConnection myconn=new SqlConnection(P_Con);

  SqlDataAdapter adpt=new SqlDataAdapter(sql,myconn);

  DataSet ds=new DataSet();

  adpt.Fill(ds);

  return  ds.Tables[0];

  }

  /// <summary>

  /// 返回结果的类型为SqlDataReader

  /// </summary>

  public SqlDataReader ExecuteDataReadersql(string sql)

  {

  SqlConnection myconn=new SqlConnection(P_Con);

  SqlDataReader dr=null;

  SqlCommand mycomm=new SqlCommand(sql,myconn);

  try

  {

  myconn.Open();

  dr=mycomm.ExecuteReader();

  }

  catch

  {

  //    StreamWriter sw=new StreamWriter(@"c:\err.txt",true,System.Text.Encoding.GetEncoding("GB2312"));

  //    sw.WriteLine("============================出错信息==========================");

  //    sw.WriteLine("出错时间:"+DateTime.Now.ToString()+"");

  //    sw.WriteLine(ex.ToString());

  //    sw.Close();

  throw;

  }

  return dr;

  }

  /// <summary>

  /// 返回结果的类型为DataSet

  /// </summary>

  public DataSet ExecutesqlDS(string sql)

  {

  SqlConnection myconn=new SqlConnection(P_Con);

  SqlDataAdapter adpt=new SqlDataAdapter (sql,myconn);

  DataSet ds=new DataSet();

  adpt.Fill(ds);

  return ds;

  }

  #endregion

  #region "执行不返回结果的sql语句"

  /// <summary>

  /// 执行不返回结果的sql语句

  /// </summary>

  public void ExecuteNonsql(string sql)

  {

  SqlConnection myconn=new SqlConnection(P_Con);

  SqlCommand mycomm=new SqlCommand(sql,myconn);

  try

  {

  myconn.Open();

  mycomm.ExecuteNonQuery();

  myconn.Close();

  }

  catch(Exception e)

  {

  //   StreamWriter sw=new StreamWriter(@"c:\err.txt",true,System.Text.Encoding.GetEncoding("GB2312"));

  //    sw.WriteLine("============================出错信息==========================");

  //    sw.WriteLine("出错时间:"+DateTime.Now.ToString()+"");

  //    sw.WriteLine(e.ToString());

  //    sw.Close();

  throw new Exception(e.Message,e);

  }

  }

  #endregion

  #region "启用带事务的sql语句如(insert,update)"

  /// <summary>

  /// 使用事务处理

  /// </summary>

  public void ExecuteTransql(string sql)

  {

  SqlConnection myconn=new SqlConnection(P_Con);

  SqlCommand mycomm=new SqlCommand(sql,myconn);

  SqlTransaction trans=null;

  try

  {

  myconn.Open();

  trans=myconn.BeginTransaction();

  mycomm.Transaction=trans;

  mycomm.ExecuteNonQuery();

  trans.Commit();

  }

  catch(Exception ex)

  {

  trans.Rollback();

  throw new Exception(ex.Message,ex);

  }

  }

  #endregion

  }

  }