数据访问层设计(3)

    技术2022-05-11  77

     3 配置设计与工厂设计

    1)配置

    using System;using System.Data;using System.Xml;using System.Configuration;using HKH.DataBase;using HKH.DataBase.Type;

    namespace HKH.DataBase.Config{ /// <summary> /// 数据访问层的配置类,单例模式 /// </summary> /// <remarks> ///  Create By Liwt on 2006 - 06 - 21 /// </remarks> public class clsDBAccessConfig {  //保持对自己的静态引用  private static clsDBAccessConfig m_clsDBAccessConfig = new clsDBAccessConfig();

      #region 私有变量

      private ConnectionType m_ConnType = null;

      #endregion

      #region 属性

      public ConnectionType ConnType  {   get   {    return m_ConnType;   }  }

      #endregion

      /// <summary>  /// 私有构造  /// </summary>  private clsDBAccessConfig()  {   try   {    m_ConnType = GetConnType();   }   catch   {    throw new Exception("数据库配置出错,请检查配置后重新启动程序");   }  }

      /// <summary>  /// 对外提供自身实例  /// </summary>  /// <returns></returns>  public static clsDBAccessConfig GetInstance()  {   return m_clsDBAccessConfig;  }

      #region 私有方法  /// <summary>  /// 读取配置文件  /// </summary>  /// <returns></returns>  private ConnectionType GetConnType()  {   try   {    ConnectionType m_connType = new ConnectionType();    AppSettingsReader appReader = new AppSettingsReader();

        m_connType.DBType = (DataBaseType)System.Enum.Parse(typeof(DataBase.Type.DataBaseType),(string)appReader.GetValue("DataBaseType",typeof(string)),true);    m_connType.Provider = appReader.GetValue("Provider",typeof(string)) as string;    m_connType.DataBaseName = appReader.GetValue("DataBaseName",typeof(string)) as string;    m_connType.UserID = appReader.GetValue("UserID",typeof(string)) as string;    m_connType.Password = appReader.GetValue("Password",typeof(string)) as string;    m_connType.IntegratedSecurity = Convert.ToBoolean(appReader.GetValue("IntegratedSecurity",typeof(string)));    m_connType.ServerName = appReader.GetValue("ServerName",typeof(string)) as string;     m_connType.ConnectTimeout = Convert.ToInt32(appReader.GetValue("ConnectTimeout",typeof(string)));    m_connType.Mode = appReader.GetValue("Mode",typeof(string)) as string;    m_connType.ExtendedProperties = appReader.GetValue("ExtendedProperties",typeof(string)) as string;

       return m_connType;   }   catch (Exception ex)   {    throw ex;   }  }

      #endregion

     }}

    2)桥设计

    using System;using System.Xml;using System.Data;using System.Configuration;using System.Reflection;using HKH.DataBase.Interface;using HKH.DataBase.Config;using HKH.DataBase.Type;using HKH.DataBase.Sql;using HKH.DataBase.Odbc;using HKH.DataBase.OleDb;

    namespace HKH.DataBase{ /// <summary> /// DBFactory 的摘要说明。 /// </summary> public sealed class DBFactory {  private static DataBaseType dbType = HKH.DataBase.Config.clsDBAccessConfig.GetInstance().ConnType.DBType;

      private DBFactory()  {  }

      #region 获取 IDataAccess 的实例

      /// <summary>  /// 获取数据库访问类的实例  /// </summary>  /// <returns></returns>  public static IDBAccess GetDataAccess()  {   try   {    IDBAccess m_IDBAccess = null;

        switch(dbType)    {     case DataBaseType.SqlServer:     {      m_IDBAccess = new clsSqlDBAccess();      break;     }     case DataBaseType.Odbc:     {      m_IDBAccess = new clsOdbcDBAccess();      break;     }     case DataBaseType.OleDb:     {      m_IDBAccess = new clsOleDbDBAccess();      break;     }     default:      break;    }

        return m_IDBAccess;   }   catch ( Exception ex )   {    throw ex;   }  }

      /// <summary>  /// 获取数据库访问类的实例  /// </summary>  /// <param name="myds"></param>  /// <returns></returns>  public static IDBAccess GetDataAccess( DataSet myds)  {   try   {    IDBAccess m_IDBAccess = null;

        switch(dbType)    {     case DataBaseType.SqlServer:     {      m_IDBAccess = new clsSqlDBAccess(myds);      break;     }     case DataBaseType.Odbc:     {      m_IDBAccess = new clsOdbcDBAccess(myds);      break;     }     case DataBaseType.OleDb:     {      m_IDBAccess = new clsOleDbDBAccess(myds);      break;     }     default:      break;    }

        return m_IDBAccess;   }   catch ( Exception ex )   {    throw ex;   }  }

      /// <summary>  /// 获取数据库访问类的实例  /// </summary>  /// <param name="myds"></param>  /// <param name="Conn"></param>  /// <param name="Trans"></param>  /// <returns></returns>  public static IDBAccess GetDataAccess(DataSet myds,IDbConnection Conn,IDbTransaction Trans)  {   try   {    IDBAccess m_IDBAccess = null;

        switch(dbType)    {     case DataBaseType.SqlServer:     {      m_IDBAccess = new clsSqlDBAccess(myds,Conn,Trans);      break;     }     case DataBaseType.Odbc:     {      m_IDBAccess = new clsOdbcDBAccess(myds,Conn,Trans);      break;     }     case DataBaseType.OleDb:     {      m_IDBAccess = new clsOleDbDBAccess(myds,Conn,Trans);      break;     }     default:      break;    }

        return m_IDBAccess;   }   catch ( Exception ex )   {    throw ex;   }  }

      /// <summary>  /// 获取数据库访问类的实例  /// </summary>  /// <param name="Conn"></param>  /// <param name="Trans"></param>  /// <returns></returns>  public static IDBAccess GetDataAccess(IDbConnection Conn,IDbTransaction Trans)  {   try   {    IDBAccess m_IDBAccess = null;

        switch(dbType)    {     case DataBaseType.SqlServer:     {      m_IDBAccess = new clsSqlDBAccess(Conn,Trans);      break;     }     case DataBaseType.Odbc:     {      m_IDBAccess = new clsOdbcDBAccess(Conn,Trans);      break;     }     case DataBaseType.OleDb:     {      m_IDBAccess = new clsOleDbDBAccess(Conn,Trans);      break;     }     default:      break;    }

        return m_IDBAccess;   }   catch ( Exception ex )   {    throw ex;   }  }

      #endregion

      #region 获取 IDAOBuilder 的实例

      /// <summary>  /// 获取数据库访问对象的实例  /// </summary>  /// <returns></returns>  public static IDAOBuilder GetDAOBuilder()  {   try   {    IDAOBuilder m_IDAOBuilder = null;    switch(dbType)    {     case DataBaseType.SqlServer:     {      m_IDAOBuilder = new clsSqlDAOBuilder();      break;     }     case DataBaseType.Odbc:     {      m_IDAOBuilder = new clsOdbcDAOBuilder();      break;     }     case DataBaseType.OleDb:     {      m_IDAOBuilder = new clsOleDbDAOBuilder();      break;     }     default:      break;    }

        return m_IDAOBuilder;   }   catch ( Exception ex )   {    throw ex;   }  }

      /// <summary>  /// 获取数据库访问对象的实例  /// </summary>  /// <param name="myds"></param>  /// <returns></returns>  public static IDAOBuilder GetDAOBuilder(DataSet myds)  {   try   {    IDAOBuilder m_IDAOBuilder = null;    switch(dbType)    {     case DataBaseType.SqlServer:     {      m_IDAOBuilder = new clsSqlDAOBuilder(myds);      break;     }     case DataBaseType.Odbc:     {      m_IDAOBuilder = new clsOdbcDAOBuilder(myds);      break;     }     case DataBaseType.OleDb:     {      m_IDAOBuilder = new clsOleDbDAOBuilder(myds);      break;     }     default:      break;    }

        return m_IDAOBuilder;   }   catch ( Exception ex )   {    throw ex;   }  }

      /// <summary>  /// 获取数据库访问对象的实例  /// </summary>  /// <param name="myds"></param>  /// <param name="Conn"></param>  /// <param name="Trans"></param>  /// <returns></returns>  public static IDAOBuilder GetDAOBuilder(DataSet myds ,IDbConnection Conn,IDbTransaction Trans)  {   try   {    IDAOBuilder m_IDAOBuilder = null;    switch(dbType)    {     case DataBaseType.SqlServer:     {      m_IDAOBuilder = new clsSqlDAOBuilder(myds,Conn,Trans);      break;     }     case DataBaseType.Odbc:     {      m_IDAOBuilder = new clsOdbcDAOBuilder(myds,Conn,Trans);      break;     }     case DataBaseType.OleDb:     {      m_IDAOBuilder = new clsOleDbDAOBuilder(myds,Conn,Trans);      break;     }     default:      break;    }

        return m_IDAOBuilder;   }   catch ( Exception ex )   {    throw ex;   }  }

      /// <summary>  /// 获取数据库访问对象的实例  /// </summary>  /// <param name="Conn"></param>  /// <param name="Trans"></param>  /// <returns></returns>  public static IDAOBuilder GetDAOBuilder(IDbConnection Conn,IDbTransaction Trans)  {   try   {    IDAOBuilder m_IDAOBuilder = null;    switch(dbType)    {     case DataBaseType.SqlServer:     {      m_IDAOBuilder = new clsSqlDAOBuilder(Conn,Trans);      break;     }     case DataBaseType.Odbc:     {      m_IDAOBuilder = new clsOdbcDAOBuilder(Conn,Trans);      break;     }     case DataBaseType.OleDb:     {      m_IDAOBuilder = new clsOleDbDAOBuilder(Conn,Trans);      break;     }     default:      break;    }

        return m_IDAOBuilder;   }   catch ( Exception ex )   {    throw ex;   }  }

      #endregion

      #region 私有方法

      #endregion

     }}


    最新回复(0)