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
}}