public static DbAccessor NewDbAccessor(string connectionString, string providerName) { DbAccessor dba = null; if (string.IsNullOrEmpty(providerName) || providerName == "System.Data.SqlClient" || providerName.ToLower() == DbProviderName.SqlServer.ToString().ToLower()) { dba = new SqlServerAccessor(connectionString); } else if (providerName.ToLower() == DbProviderName.MySql.ToString().ToLower() || providerName == "MySql.Data.MySqlClient") { dba = new MySqlAccessor(connectionString); } else { Type tProviderName = Type.GetType(providerName); if (tProviderName == null) { throw new Exception(string.Format("ConnectionString({0})的ProviderName({1})找不到该类型!", connectionString, providerName)); } //else if (!(tProviderName.IsSubclassOf(typeof(DbAccessor)))) //{ // throw new Exception(string.Format("ConnectionString({0})的ProviderName({1})该类型不是DbAccessor的实现类!", connectionString, providerName)); //} object oProviderName = Activator.CreateInstance(tProviderName, connectionString); dba = oProviderName as DbAccessor; } return(dba); }
/// <summary> /// Creates an database accessor for the specifyed database type /// </summary> /// <param name="dbProvider"></param> /// <returns></returns> public static DbAccessor Create(DbProvider dbProvider) { DbAccessor accessor; switch (dbProvider) { case DbProvider.MySql: accessor = new MySqlAccessor(); break; case DbProvider.SqLite: accessor = new SqLiteAccessor(); break; case DbProvider.Postgre: accessor = new PostgreAccessor(); break; case DbProvider.MsSql: accessor = new MsSqlAccessor(); break; case DbProvider.MsSqlCe: accessor = new MsSqlCeAccessor(); break; case DbProvider.Excel: accessor = new ExcelAccessor(); break; default: throw new NdbConnectionFailedException(string.Format("Provider {0} doesn't supported", dbProvider)); } accessor.provider = dbProvider; return(accessor); }