/// <summary> /// データベースに接続する /// </summary> /// <param name="dbms">DBMSの種別</param> /// <param name="connStr">接続文字列</param> /// <param name="dbParams">設定情報</param> public Db(SqlBuilder.DbmsType dbms , string connStr , DbParameters dbParams = null) { _dbms = dbms; _connStr = connStr; if (dbParams == null) { _params = new DbParameters(); } else { _params = (DbParameters)dbParams.Clone(); } //プールするDB接続を用意する _connections = new List <DbConn>(); for (int i = 0; i <= _params.ConnectionPool; i++) { _connections.Add(this.CreateDbConn()); } //キャッシュテーブルの作成 if (_params.Cache == DbParameters.CacheType.Null) { _aResultsCache = new NullResultsCache(); } else if (_params.Cache == DbParameters.CacheType.LRU) { _aResultsCache = new LruResultsCache(_params.CacheSize); } else if (_params.Cache == DbParameters.CacheType.MarkovLRU) { _aResultsCache = new MarkovResultsCache( new LruResultsCache(_params.CacheSize), this); } else { throw new InvalidEnumArgumentException("Undefined CacheType is used"); } //キャスターの生成 _aCaster = this.CreateCaster(); //SqlPodファクトリの生成 _aSqlPodFactory = new SqlPodFactory(_params.SqlPodsDir, _dbms); //テーブル情報の生成 _aTableInfoSet = new TableInfoSet(this); //レコードとテーブルのマッピング情報の生成 _aRecordViewTableMapFactory = new RecordViewTableMapFactory(this); //ロックマネージャの生成 //SQLiteの場合は、必ずSqliteLockManagerを使うこと if (_dbms == SqlBuilder.DbmsType.Sqlite) { _aLockManager = new SqliteLockManager(); } else if (_params.LockData == DbParameters.LockDataType.Memory) { _aLockManager = new MemLockManager(_aRecordViewTableMapFactory, _aCaster); } else if (_params.LockData == DbParameters.LockDataType.Db) { _aLockManager = new DbLockManager(_aRecordViewTableMapFactory, this); } else if (_params.LockData == DbParameters.LockDataType.Sqlite) { _aLockManager = new SqliteLockManager(); } else if (_params.LockData == DbParameters.LockDataType.Null) { _aLockManager = new NullLockManager(); } else { throw new InvalidEnumArgumentException("Undefined LockDataType is used"); } //SQL文発行ログの出力メソッドの作成 if (_params.Logger == DbParameters.LoggerType.Null) { _aLogger = new NullLogger(); } else if (_params.Logger == DbParameters.LoggerType.WindowsEventLog) { _aLogger = new WindowsEventLogger(); } else if (_params.Logger == DbParameters.LoggerType.Console) { _aLogger = new ConsoleLogger(); } else { throw new InvalidEnumArgumentException("Undefined LoggerType is used"); } }
public SqlMaker(RecordViewTableMapFactory aRecordViewTableMapFactory , SqlPodFactory aSqlPodFactory) { _aRecordViewTableMapFactory = aRecordViewTableMapFactory; _aSqlPodFactory = aSqlPodFactory; }