Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        /// <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);
        }