欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-07-19 18:06:43
using system; using system.data; using system.data.sqlclient; using&...
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
 }
}