|
导读/// <summary>/// 内部保护的数据库连接类/// </summary>protected abstract class Provider //一个静态的连接接口... /// <summary>/// 内部保护的数据库连接类 /// </summary> protected abstract class Provider { //一个静态的连接接口; private static System.Data.IDbConnection conn; /// <summary> /// 构造方法,设为私有类型,是防止外部无效的引用; /// </summary> protected Provider() { System.Data.IDbCommand x=new System.Data.OleDb.OleDbCommand(); } /// <summary> /// 返回数据库边接类型 /// </summary> public static DBType Type { get { return Provider.m_DBType; } set { Provider.m_DBType=value; } } private static string m_ConnectionString; private static string m_ConnectionStringSetName; /// <summary> /// 数据库连接字符串设置名称 /// </summary> public static string ConnectionSetName { set { Provider.m_ConnectionStringSetName=value; } } /// <summary> /// 数据库连接字符串 /// </summary> public static string ConnectionString { set { Provider.m_ConnectionString=value; } } private static DBType m_DBType; /// <summary> /// 获得数据库连接接口 /// </summary> /// <returns>返回一个连接</returns> public static System.Data.IDbConnection getConn() { string ConnStr=""; try{ //System.Threading.Thread.GetDomain().UnhandledException+=new UnhandledExceptionEventHandler(ThrowDBException); if(Provider.m_ConnectionString==""||Provider.m_ConnectionString==null) { if(Provider.m_ConnectionStringSetName.Trim()=="") { ConnStr=System.Configuration.ConfigurationSettings.AppSettings["DataBase.ConnectionString"]; } else { ConnStr=System.Configuration.ConfigurationSettings.AppSettings[Provider.m_ConnectionStringSetName]; } } else { ConnStr=Provider.m_ConnectionString; } if(ConnStr==null||ConnStr=="") { throw new JoyBaseDBException("连接字符串为空或者是null类型,请检查您的ConnectionString以及ConnectionSetName是否进行正确设置,或者阅读相关说明."); } //DBType m_DBType;//=Provider.DataBaseType; /* * 注释:我们对前面的编码进行了部分的修改,鉴于System.Data.SqlClient的连接 * 字符串当中不可能出现"Provider"字样,所以我们根据是否有Provider字样来判断 * 该连接是基于System.Data.SqlClient的或者System.Data.OleDB的。 * 参考资料: * 可以将 ConnectionString 属性设置为单个单元。(不能为 SqlConnection 对象指定 Provider 属性。) * –或– * * 可以设置单个属性(DataSource、Database、UserName 等等)。如果设置单个属性,则将为您生成连接字符串。 * 注意 在连接字符串中存储用户名和密码有安全性设置的意味。有关详细信息,请参阅Introduction to ADO.NET Connection Design Tools。 * */ if(ConnStr.ToLower().IndexOf("provider")==-1) Provider.Type=DBType.SqlClient; else Provider.Type=DBType.OleDB; //throw new Exception("here"); if(m_DBType==DBType.SqlClient) { conn=new System.Data.SqlClient.SqlConnection(ConnStr); } else { conn=new System.Data.OleDb.OleDbConnection(ConnStr); } } catch(Exception e) { string reason="(1)未设置数据库连接字符串,请重新检查连接字符串\r\n(2)目标数据库不存在,或者是没有启动数据库或者无法登录;\r\n(3)连接字符串设置不正确,请按照标准的连接方式来写。\r\n"; throw new JoyBaseDBException(e.Message,reason); } return conn; } } } |
温馨提示:喜欢本站的话,请收藏一下本站!