成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

一個基于ADO.NET的數據訪問層的實現

2010-08-28 10:47:16來源:西部e網作者:

1、IAdoNetBuilder.cs
-------------------------
using  System;

namespace  GeneralForums.Web
{
  /// 
  ///  幫助建立各種  ADO.NET  對象的處理器。
  /// 
  public  interface  IAdoNetBuilder
  {
    /// 
    ///  建立到數據存儲的連接。
    /// 
    ///  返回已經創建的  System.Data.IDbConnection  對象引用。
    System.Data.IDbConnection  CreateConnection();

    /// 
    ///  創建一個  System.Data.IDbDataAdapter。
    /// 
    ///  返回已經創建的  System.Data.IDbDataAdapter  對象引用。
    System.Data.IDbDataAdapter  CreateDataAdapter();
  }
}


2、SqlBuilder.cs
-------------------------
using  System;

namespace  GeneralForums.Web
{
  /// 
  ///  定義基于  MS  SQL  Server  的  IAdoNetBuilder  的一個實現。
  /// 
  public  class  SqlBuilder  :  IAdoNetBuilder
  {
    /// 
    ///  配置文件中用于對連接字符串進行索引的鍵值。
    /// 
    public  static  string  ConnectionStringKey  =  "__SqlBuilder_ConnectionString";

    /// 
    ///  初始化  SqlBuilder  類的新實例。
    /// 
    public  SqlBuilder()
    {
    }

    /// 
    ///  返回數據庫連接串。
    /// 
    /// 
    public  static  string  ConnectionString()
    {
      return  System.Configuration.ConfigurationSettings.AppSettings[ConnectionStringKey];
    }

    #region  IAdoNetBuilder  成員

    /// 
    ///  建立到MS  SQL  Server  數據庫的連接。
    /// 
    ///  返回已經創建的  System.Data.IDbConnection  對象引用。
    ///  從當前配置文件(.config)中獲取連接信息(索引鍵值為“__SqlBuilder_ConnectionString”),
并建立相應的連接。配置文件中的連接信息是明文的,沒有經過任何加密,為了保證數據庫的安全,
應該考慮對  SqlCreator  提供集成的數據庫驗證。
    public  System.Data.IDbConnection  CreateConnection()
    {
      return  new  System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationSettings.AppSettings[ConnectionStringKey]);
    }

    /// 
    ///  創建一個  System.Data.IDbDataAdapter。
    /// 
    ///  返回已經創建的  System.Data.IDbDataAdapter  對象引用。
    public  System.Data.IDbDataAdapter  CreateDataAdapter()
    {
      return  new  System.Data.SqlClient.SqlDataAdapter();
    }

    #endregion
  }
}


3、AdoNetHelper.cs
-------------------------
using  System;

namespace  GeneralForums.Web
{
  /// 
  ///  為加載當前的  IAdoNetBuilder  提供方法。不能繼承該類。
  /// 
  public  sealed  class  AdoNetHelper
  {
    private  AdoNetHelper()
    {
    }

    private  static  IAdoNetBuilder  _builder  =  null;

    /// 
    ///  配置文件中表示當前正在使用的  IAdoNetBuilder  的配置鍵值。
    /// 
    public  static  string  AdoNetBuilderKey  =  "__AdoNetBuilder__";

    /// 
    ///  獲取由當前配置確定的  IAdoNetBuilder  對象引用。
    /// 
    public  static  IAdoNetBuilder  AdoNetBuilder
    {
      get
      {
        if(_builder  ==  null)
        {
          string  v  =  System.Configuration.ConfigurationSettings.AppSettings[AdoNetBuilderKey];
          if(v  ==  null  ||  v.Trim()  ==  "")
          {
            _builder  =  new  SqlBuilder();
          }
          else
          {
            string  []  vv  =  v.Split(’,’);
            if(vv.Length  <  2)
              throw  new  ArgumentException("提供的數據操作配置項目的信息不夠完整。");

            string  aname  =  vv[0].ToLower().Trim();
            System.Reflection.Assembly  assembly  =  System.Reflection.Assembly.GetExecutingAssembly();
            if(aname  !=  System.IO.Path.GetFileName(assembly.Location).ToLower())
            {
              assembly  =  System.Reflection.Assembly.LoadFrom(vv[0]);
            }

            _builder  =  (IAdoNetBuilder)assembly.CreateInstance(vv[1]);
          }
        }

        return  _builder;
      }
    }


    /// 
    ///  執行指定的數據操作。
    /// 
    ///  進行數據庫操作的  SQL  語句。
    ///  返回操作影響的數據庫的行數。
    public  static  int  Execute(string  sql)
    {
      if(sql  ==  null  ||  sql.Trim()  ==  "")
        throw  new  ArgumentNullException("sql",  "無效的數據操作語句。");

      System.Data.IDbConnection  conn  =  AdoNetBuilder.CreateConnection();
      conn.Open();
      try
      {
        System.Data.IDbCommand  cmd  =  conn.CreateCommand();
        cmd.CommandText  =  sql;
        return  cmd.ExecuteNonQuery();
      }
      finally
      {
        conn.Close();
      }
    }


    /// 
    ///  從當前數據源中獲取一個單一的值。
    /// 
    ///  進行數據操作使用的  SQL  語句。
    ///  返回已經獲取的值,如果沒有相應的值,則可能返回空引用。
    public  static  object  QueryScalar(string  sql)
    {
      if(sql  ==  null  ||  sql.Trim()  ==  "")
        throw  new  ArgumentNullException("sql",  "無效的數據操作語句。");

      System.Data.IDbConnection  conn  =  AdoNetBuilder.CreateConnection();
      conn.Open();
      try
      {
        System.Data.IDbCommand  cmd  =  conn.CreateCommand();
        cmd.CommandText  =  sql;
        return  cmd.ExecuteScalar();
      }
      finally
      {
        conn.Close();
      }
    }


    /// 
    ///  從當前數據源中獲取一個記錄行。
    /// 
    ///  進行數據庫操作使用的  SQL  語句,如果語句包含一個記錄集,則只返回記錄集中的第一個記錄行。
    ///  返回已經獲取的行的值,該行中的所有的值以字典的形式保存。如果沒有相應的行,則返回的字典的長度為  0。
    ///  如果數據庫中的值為空值,則返回的字典中的相應值為空引用。
    public  static  System.Collections.IDictionary  QueryRow(string  sql)
    {
      if(sql  ==  null  ||  sql.Trim()  ==  "")
        throw  new  ArgumentNullException("sql",  "無效的數據操作語句。");

      System.Data.IDbConnection  conn  =  AdoNetBuilder.CreateConnection();
      conn.Open();
      try
      {
        System.Data.IDbCommand  cmd  =  conn.CreateCommand();
        cmd.CommandText  =  sql;
        System.Data.IDataReader  reader  =  null;
        try
        {
          reader  =  cmd.ExecuteReader();
          if(reader.Read())
          {
            int  count  =  reader.FieldCount;
            System.Collections.Specialized.HybridDictionary  d  =  new  System.Collections.Specialized.HybridDictionary(count);
            for(int  i  =  0;  i  <  count;  i  ++)
            {
              d.Add(reader.GetName(i),  reader.IsDBNull(i)  ?  null  :  reader.GetValue(i));
            }
            return  d;
          }
          else
          {
            return  new  System.Collections.Specialized.HybridDictionary(1);
          }
        }
        finally
        {
          if(reader  !=  null  &&  !reader.IsClosed)
            reader.Close();
        }
      }
      finally
      {
        conn.Close();
      }
    }


    /// 
    ///  從當前的數據源中加載一個行集。
    /// 
    ///  進行數據庫操作使用的  SQL  語句。
    ///  返回  System.Data.DataSet  ,該集合中包含了所有的符合條件的行集。
    public  static  System.Data.DataSet  QueryRows(string  sql)
    {
      if(sql  ==  null  ||  sql.Trim()  ==  "")
        throw  new  ArgumentNullException("sql",  "無效的數據操作語句。");

      System.Data.IDbConnection  conn  =  AdoNetBuilder.CreateConnection();
      conn.Open();
      try
      {
        System.Data.IDbCommand  cmd  =  conn.CreateCommand();
        cmd.CommandText  =  sql;

        System.Data.IDbDataAdapter  adapter  =  AdoNetBuilder.CreateDataAdapter();
        System.Data.DataSet  dataset  =  new  System.Data.DataSet();

        adapter.SelectCommand  =  cmd;
        adapter.Fill(dataset);
       
        return  dataset;
      }
      finally
      {
        conn.Close();
      }
    }


   
  }
}


=========

關鍵詞:ADO.NET

贊助商鏈接:

主站蜘蛛池模板: 法库县| 西贡区| 长丰县| 星子县| 怀来县| 长春市| 江西省| 翁源县| 谷城县| 武冈市| 安乡县| 晋城| 德昌县| 禹城市| 五家渠市| 开化县| 信丰县| 蓝山县| 汤原县| 穆棱市| 崇仁县| 万源市| 曲靖市| 中西区| 浑源县| 汾西县| 大埔区| 将乐县| 连江县| 肃南| 常山县| 社会| 吕梁市| 定远县| 澳门| 安康市| 波密县| 海门市| 罗田县| 龙南县| 肥东县|