Ejemplo n.º 1
0
        /// <summary>
        /// 接続を初期化します。
        /// </summary>
        private void initializeConnection(HalationGhostDbConnectSettingLoaderBase loader)
        {
            if (HalationGhostDbAccessBase.connectionSetting == null)
            {
                HalationGhostDbConnectSettingLoaderBase settingLoader = loader;
                if (settingLoader == null)
                {
                    settingLoader = new HalationGhostDbConnectSettingLoaderBase();
                }

                // キャッシュされていない場合は接続設定ファイルを読み込む
                HalationGhostDbAccessBase.connectionSetting = settingLoader.Load();
                if (HalationGhostDbAccessBase.connectionSetting == null)
                {
                    throw new Exception("DBの接続設定ファイルがLoadできません。");
                }
            }

            // 接続する設定ファイル番号を取得
            var num = this.getConnectionNumber();

            if ((HalationGhostDbAccessBase.helper == null) || (!num.HasValue))
            {
                HalationGhostDbAccessBase.helper = DbAccessHelperFactory.CreateHelper(HalationGhostDbAccessBase.connectionSetting, num);
            }

            this.Connection = HalationGhostDbAccessBase.helper.GetConnection();
        }
Ejemplo n.º 2
0
        /// <summary>IDbAccessHelperを生成します。</summary>
        /// <param name="setting">DBの接続設定を表すDbConnectionSetting。</param>
        /// <param name="targetNumber">接続先DBの番号を表すint?。</param>
        /// <returns>DBへアクセスするためのIDbAccessHelper。</returns>
        public static IDbAccessHelper CreateHelper(DbConnectionSetting setting, int?targetNumber)
        {
            var num = targetNumber;

            if (!num.HasValue)
            {
                num = setting.TargetNumber;
            }

            var info = setting.ConnectInformations.Find(c => c.Number == num);

            if (info == null)
            {
                return(null);
            }

            switch (info.DbType)
            {
            case DatabaseType.SQLite:
                return(new SqliteAccessHelper(info));
            }

            return(null);
        }