Example #1
0
        /// <summary>
        /// 从默认配置中初始化数据连接参数,包括连接字符串(ConnectionString)、DbProviderFactory、DbAdapter。
        /// </summary>
        /// <returns>初始化成功时,返回DbProvider,否则,返回null。</returns>
        public static DbProvider Initialize()
        {
            DbConnection _conn = null;
            DbProvider   res   = new DbProvider();

            try
            {
                res._config["DbAdapter"] = Activator.CreateInstance(Type.GetType(ConfigurationManager.AppSettings["DbAdapter"]));
                res.Adapter.InitializeOptions(res.Options);
                if (string.IsNullOrEmpty(ConfigurationManager.AppSettings["DbProviderFactory"]) && res.Options["DefaultDbProviderFactory"] != null)
                {
                    res._config["DbProviderFactory"] = _getInstance <DbProviderFactory>(res.Options["DefaultDbProviderFactory"]);
                }
                else
                {
                    res._config["DbProviderFactory"] = Activator.CreateInstance(Type.GetType(ConfigurationManager.AppSettings["DbProviderFactory"]));
                }
                res._config["ConnectionString"] = ConfigurationManager.AppSettings["ConnectionString"];
                if (string.IsNullOrEmpty(res.ConnectionString))
                {
                    NameValueList DbParameters = new NameValueList();
                    DbParameters.Add("Host", ConfigurationManager.AppSettings["DbHost"]);
                    DbParameters.Add("Database", ConfigurationManager.AppSettings["DbDatabase"]);
                    DbParameters.Add("FilePath", ConfigurationManager.AppSettings["DbFilePath"]);
                    DbParameters.Add("Username", ConfigurationManager.AppSettings["DbUsername"]);
                    DbParameters.Add("Password", ConfigurationManager.AppSettings["DbPassword"]);
                    DbParameters.Add("Charset", ConfigurationManager.AppSettings["DbCharset"]);
                    DbParameters.Add("Version", ConfigurationManager.AppSettings["DbVersion"]);
                    DbParameters.Add("ReadOnly", ConfigurationManager.AppSettings["DbReadOnly"]);
                    res._config["ConnectionString"] = res.Adapter.BuildConnectionString(DbParameters);
                }
                _conn = res.Provider.CreateConnection();
                _conn.ConnectionString = res.ConnectionString;
                _conn.Open();
                res._config["DbSchema"] = res.Adapter.GetSchema(_conn);
                if (Current == null)
                {
                    Current = res;
                }
                return(res);
            }
            catch (Exception e)
            {
                #if DEBUG
                DbConnectException dce = new DbConnectException(e, res._config);
                Debug.WriteLine(dce);
                throw dce;
                #endif

                return(null);
            }
            finally
            {
                try
                {
                    _conn.Close();
                }
                catch { }
            }
        }
Example #2
0
        /// <summary>
        /// 使用若干参数初始化数据连接参数。
        /// </summary>
        /// <param name="Parameters">参数,包括DbProviderFactory(String类型表示的完整限定名称或DbProviderFactory类型)、DbAdapter(String类型表示的类型完整限定名称或DbAdapter类型),及连接字符串(ConnectionString)或当前IDbAdapter.BuildConnectionString所需参数。</param>
        /// <returns>初始化成功时,返回DbProvider,否则,返回null。</returns>
        public static DbProvider Initialize(NameValueList Parameters)
        {
            DbConnection _conn = null;
            DbProvider   res   = new DbProvider();

            try
            {
                IDbAdapter DbAdapter = _getInstance <IDbAdapter>(Parameters["DbAdapter"]);
                if (DbAdapter != null)
                {
                    res._config["DbAdapter"] = DbAdapter;
                    DbAdapter.InitializeOptions(res.Options);
                }
                DbProviderFactory DbProviderFactory = _getInstance <DbProviderFactory>(Parameters["DbProviderFactory"]);
                if (DbProviderFactory != null)
                {
                    res._config["DbProviderFactory"] = DbProviderFactory;
                }
                else if (res.Options["DefaultDbProviderFactory"] != null)
                {
                    res._config["DbProviderFactory"] = _getInstance <DbProviderFactory>(res.Options["DefaultDbProviderFactory"]);
                }
                if (Parameters["ConnectionString"] is string)
                {
                    res._config["ConnectionString"] = Parameters["ConnectionString"];
                }
                else
                {
                    res._config["ConnectionString"] = res.Adapter.BuildConnectionString(Parameters);
                }
                _conn = res.Provider.CreateConnection();
                _conn.ConnectionString = res.ConnectionString;
                _conn.Open();
                res._config["DbSchema"] = res.Adapter.GetSchema(_conn);
                if (Current == null)
                {
                    Current = res;
                }
                return(res);
            }
            catch (Exception e)
            {
                #if DEBUG
                DbConnectException dce = new DbConnectException(e, res._config);
                Debug.WriteLine(dce);
                throw dce;
                #endif

                return(null);
            }
            finally
            {
                try
                {
                    _conn.Close();
                }
                catch { }
            }
        }
Example #3
0
        /// <summary>
        /// 使用连接字符串、DbProviderFactory、DbAdapter初始化数据连接参数。
        /// </summary>
        /// <param name="ConnectionString">连接字符串</param>
        /// <param name="DbProviderFactory">DbProviderFactory</param>
        /// <param name="DbAdapter">DbAdapter</param>
        /// <returns>初始化成功时,返回DbProvider,否则,返回null。</returns>
        public static DbProvider Initialize(string ConnectionString, DbProviderFactory DbProviderFactory, IDbAdapter DbAdapter)
        {
            DbConnection _conn = null;
            DbProvider   res   = new DbProvider();

            try
            {
                if (DbAdapter != null)
                {
                    res._config["DbAdapter"] = DbAdapter;
                    DbAdapter.InitializeOptions(res.Options);
                }
                if (DbProviderFactory != null)
                {
                    res._config["DbProviderFactory"] = DbProviderFactory;
                }
                else if (res.Options["DefaultDbProviderFactory"] != null)
                {
                    res._config["DbProviderFactory"] = _getInstance <DbProviderFactory>(res.Options["DefaultDbProviderFactory"]);
                }
                if (!string.IsNullOrEmpty(ConnectionString))
                {
                    res._config["ConnectionString"] = ConnectionString;
                }
                _conn = res.Provider.CreateConnection();
                _conn.ConnectionString = res.ConnectionString;
                _conn.Open();
                res._config["DbSchema"] = res.Adapter.GetSchema(_conn);
                if (Current == null)
                {
                    Current = res;
                }
                return(res);
            }
            catch (Exception e)
            {
                #if DEBUG
                DbConnectException dce = new DbConnectException(e, res._config);
                Debug.WriteLine(dce);
                throw dce;
                #endif

                return(null);
            }
            finally
            {
                try
                {
                    _conn.Close();
                }
                catch { }
            }
        }
Example #4
0
 public void Open()
 {
     Debug.Assert(Status == ConnectionStatus.Initialized, "Connection.Open: Status must be Initialized.");
     if (Status == ConnectionStatus.Initialized)
     {
         try
         {
             _oriConnection.Open();
             Status = ConnectionStatus.Opend;
         }
         catch (Exception e)
         {
             #if DEBUG
             DbConnectException dce = new DbConnectException(e);
             Debug.WriteLine(dce);
             throw dce;
             #endif
         }
     }
 }
Example #5
0
 public void Open()
 {
     Debug.Assert(Status == ConnectionStatus.Initialized, "Connection.Open: Status must be Initialized.");
     if (Status == ConnectionStatus.Initialized)
     {
         try
         {
             _oriConnection.Open();
             Status = ConnectionStatus.Opend;
         }
         catch (Exception e)
         {
             #if DEBUG
                 DbConnectException dce = new DbConnectException(e);
                 Debug.WriteLine(dce);
                 throw dce;
             #endif
         }
     }
 }