zoukankan      html  css  js  c++  java
  • 数据访问类

    using System;
    using System.Data;
    using System.Data.SqlClient;

    namespace SysClassLibrary
    {
     /// <summary>
     /// DataAccess 的摘要说明。
     /// <description>数据处理基类,调用方式:DataAccess.DataSet((string)sqlstr);或者DataAccess.DataSet((string)sqlstr,ref DataSet ds); </description>
     /// </summary>
     public class DataAccess
     {
      #region  属性
      protected static SqlConnection conn=new SqlConnection();
      protected static SqlCommand    comm=new SqlCommand();
      #endregion
      public DataAccess()
      {
       //init();
      }
      #region 内部函数  静态方法中不会执行DataAccess()构造函数

      /// <summary>
      /// 打开数据库连接
      /// </summary>
      private static void openConnection()
      {
       if (conn.State == ConnectionState.Closed)
       {
        //SysConfig.ConnectionString 为系统配置类中连接字符串,如:"server=localhost;database=databasename;uid=sa;pwd=;"

        conn.ConnectionString = SysConfig.ConnectionString ;
        comm.Connection =conn;
        try
        {
         conn.Open();
        }
        catch(Exception e)
        {
         throw new Exception(e.Message);
        }
       }
      }
      /// <summary>
      /// 关闭当前数据库连接
      /// </summary>
      private static void closeConnection()
      {
       if(conn.State == ConnectionState.Open)
        conn.Close();
       conn.Dispose();
       comm.Dispose();
      }
      #endregion
      /// <summary>
      /// 执行Sql查询语句
      /// </summary>
      /// <param name="sqlstr">传入的Sql语句</param>
      public static void ExecuteSql(string sqlstr)
      {
            try
       {
        openConnection();
        comm.CommandType =CommandType.Text ;
        comm.CommandText =sqlstr;
        comm.ExecuteNonQuery();
       }
       catch(Exception e)
       {
        throw new Exception(e.Message);
       }
       finally
       {
        closeConnection();
       }
      }

      /// <summary>
      /// 执行存储过程
      /// </summary>
      /// <param name="procName">存储过程名</param>
      /// <param name="coll">SqlParameters 集合</param>
      public static void ExecutePorcedure(string procName,SqlParameter[] coll)
      {
       try
       {
        openConnection();
        for(int i=0;i<coll.Length;i++)
        {
         comm.Parameters .Add(coll[i]);
        }
        comm.CommandType=CommandType.StoredProcedure ;
        comm.CommandText =procName;
        comm.ExecuteNonQuery();
       }
       catch(Exception e)
       {
        throw new Exception(e.Message);
       }
       finally
       {
        comm.Parameters.Clear();
        closeConnection();
       }
      }

      /// <summary>
      /// 执行存储过程并返回数据集
      /// </summary>
      /// <param name="procName">存储过程名称</param>
      /// <param name="coll">SqlParameter集合</param>
      /// <param name="ds">DataSet </param>
      public static void ExecutePorcedure(string procName,SqlParameter[] coll,ref DataSet ds)
      {
       try
       {
        SqlDataAdapter da=new SqlDataAdapter();
        openConnection();
        for(int i=0;i<coll.Length;i++)
        {
         comm.Parameters .Add(coll[i]);
    }
        comm.CommandType=CommandType.StoredProcedure ;
        comm.CommandText =procName;
       
        da.SelectCommand =comm;
        da.Fill(ds);
       }
       catch(Exception e)
       {
        throw new Exception(e.Message);
       }
       finally
       {
        comm.Parameters.Clear();
        closeConnection();
       }
      }

      /// <summary>
      /// 执行Sql查询语句并返回第一行的第一条记录,返回值为object 使用时需要拆箱操作 -> Unbox
      /// </summary>
      /// <param name="sqlstr">传入的Sql语句</param>
      /// <returns>object 返回值 </returns>
      public static object ExecuteScalar(string sqlstr)
      {
       object obj=new object();
       try
       {
        openConnection();
        comm.CommandType =CommandType.Text ;
        comm.CommandText =sqlstr;
        obj=comm.ExecuteScalar();
       }
       catch(Exception e)
       {
        throw new Exception(e.Message);
       }
       finally
       {
        closeConnection();
       }
       return obj;
      }

      /// <summary>
      /// 执行Sql查询语句,同时进行事务处理
      /// </summary>
      /// <param name="sqlstr">传入的Sql语句</param>
     public static void ExecuteSqlWithTransaction(string strSql)
    {
    closeConnection();
    openConnection();

    SqlTransaction trans ;
    trans=con.BeginTransaction();
    com.Transaction =trans;
    try
    {
    openConnection();
    com.CommandType =CommandType.Text ;
    com.CommandText =strSql;
    com.ExecuteNonQuery(); 
    trans.Commit();
    }
    catch
    {
    trans.Rollback();
    }
    finally
    {
    closeConnection();
    }
    }

      /// <summary>
      /// 返回指定Sql语句的SqlDataReader,请注意,在使用后请关闭本对象,同时将自动调用closeConnection()来关闭数据库连接
      /// 方法关闭数据库连接
      /// </summary>
      /// <param name="sqlstr">传入的Sql语句</param>
      /// <returns>SqlDataReader对象</returns>
      public static SqlDataReader dataReader(string sqlstr)
      {
       SqlDataReader dr=null;
       try
       {
        openConnection();
        comm.CommandText =sqlstr;
        comm.CommandType =CommandType.Text ;
        dr=comm.ExecuteReader(CommandBehavior.CloseConnection);
       }
       catch
       {
        try
        {
         dr.Close();
         closeConnection();
        }
        catch
        {
        }
       }
       return dr;
      }
      /// <summary>
      /// 返回指定Sql语句的SqlDataReader,请注意,在使用后请关闭本对象,同时将自动调用closeConnection()来关闭数据库连接
      /// 方法关闭数据库连接
      /// </summary>
      /// <param name="sqlstr">传入的Sql语句</param>
      /// <param name="dr">传入的ref DataReader 对象</param>
      public static void dataReader(string sqlstr,ref SqlDataReader dr)
      {
       try
       {
        openConnection();
        comm.CommandText =sqlstr;
        comm.CommandType =CommandType.Text ;
        dr=comm.ExecuteReader(CommandBehavior.CloseConnection);
       }
       catch
       {
        try
        {
         if(dr!=null && !dr.IsClosed)
     dr.Close();
        }
        catch
        {
        }
        finally
        {
         closeConnection();
        }
       }
      }

      /// <summary>
      /// 返回指定Sql语句的DataSet
      /// </summary>
      /// <param name="sqlstr">传入的Sql语句</param>
      /// <returns>DataSet</returns>
      public static DataSet dataSet(string sqlstr)
      {
       DataSet ds= new DataSet();
       SqlDataAdapter da=new SqlDataAdapter();
       try
       {
        openConnection();
        comm.CommandType =CommandType.Text ;
        comm.CommandText =sqlstr;
        da.SelectCommand =comm;
        da.Fill(ds);
       }
       catch(Exception e)
       {
        throw new Exception(e.Message);
       }
       finally
       {
        closeConnection();
       }
       return ds;
      }

      /// <summary>
      /// 返回指定Sql语句的DataSet
      /// </summary>
      /// <param name="sqlstr">传入的Sql语句</param>
      /// <param name="ds">传入的引用DataSet对象</param>
      public static void dataSet(string sqlstr,ref DataSet ds)
      {
       SqlDataAdapter da=new SqlDataAdapter();
       try
       {
        openConnection();
        comm.CommandType =CommandType.Text ;
        comm.CommandText =sqlstr;
        da.SelectCommand =comm;
        da.Fill(ds);
       }
       catch(Exception e)
       {
        throw new Exception(e.Message);
       }
     finally
       {
        closeConnection();
       }
      }
      /// <summary>
      /// 返回指定Sql语句的DataTable
      /// </summary>
      /// <param name="sqlstr">传入的Sql语句</param>
      /// <returns>DataTable</returns>
      public static DataTable dataTable(string sqlstr)
      {
       SqlDataAdapter da=new SqlDataAdapter();
       DataTable datatable=new DataTable();
       try
       {
        openConnection();
        comm.CommandType =CommandType.Text ;
        comm.CommandText =sqlstr;
        da.SelectCommand =comm;
        da.Fill(datatable);
       }
       catch(Exception e)
       {
        throw new Exception(e.Message);
       }
       finally
       {
        closeConnection();
       }
       return datatable;
      }

      /// <summary>
      /// 执行指定Sql语句,同时给传入DataTable进行赋值
      /// </summary>
      /// <param name="sqlstr">传入的Sql语句</param>
      /// <param name="dt">ref DataTable dt </param>
      public static void dataTable(string sqlstr,ref DataTable dt)
      {
       SqlDataAdapter da=new SqlDataAdapter();
       try
       {
        openConnection();
        comm.CommandType =CommandType.Text ;
        comm.CommandText =sqlstr;
        da.SelectCommand =comm;
        da.Fill(dt);
       }
       catch(Exception e)
       {
        throw new Exception(e.Message);
       }
       finally
       {
        closeConnection();
       }
      }
      /// <summary>
     /// 执行带参数存储过程并返回数据集合
      /// </summary>
      /// <param name="procName">存储过程名称</param>
      /// <param name="parameters">SqlParameterCollection 输入参数</param>
      /// <returns></returns>
      public static DataTable dataTable(string procName,SqlParameterCollection parameters)
      {
       SqlDataAdapter da=new SqlDataAdapter();
       DataTable datatable=new DataTable();
       try
       {
        openConnection();
        comm.Parameters.Clear();
        comm.CommandType=CommandType.StoredProcedure ;
        comm.CommandText =procName;
        foreach(SqlParameter para in parameters)
        {
         SqlParameter p=(SqlParameter)para;
         comm.Parameters.Add(p);
        }
        da.SelectCommand =comm;
        da.Fill(datatable);
       }
       catch(Exception e)
       {
        throw new Exception(e.Message);
       }
       finally
       {
        closeConnection();
       }
       return datatable;
      }

      public static DataView dataView(string sqlstr)
      {
       SqlDataAdapter da=new SqlDataAdapter();
       DataView dv=new DataView();
       DataSet ds=new DataSet();
       try
       {
        openConnection();
        comm.CommandType=CommandType.Text;
        comm.CommandText =sqlstr;
        da.SelectCommand =comm;
        da.Fill(ds);
        dv=ds.Tables[0].DefaultView;
       }
       catch(Exception e)
       {
        throw new Exception(e.Message);
       }
       finally
       {
        closeConnection();
       }
       return dv;
      }
     }

    }

  • 相关阅读:
    列表
    break和continue
    第三天下午
    第二天
    简历,面试
    周三&nbsp;景安
    应届生求职优势(我的求职心…

    2013年01月02日
    Click&nbsp;and&nbsp;Drag
  • 原文地址:https://www.cnblogs.com/studio313/p/269325.html
Copyright © 2011-2022 走看看