private CachedResults CreateCachedResults(string sql) { try { //Commandオブジェクトを生成する DbCommand aDbCommand = this.CreateDbCommand(sql, _aDbConnection, _aDbTransaction); //ResultsオブジェクトがDisposeされていなければ、Disposeする this.DisposeResults(); //時間計測開始 if (_debugPrint) { _stopwatch.Reset(); _stopwatch.Start(); } //データセットに結果レコードを格納する DataAndInfoTable aDataTable = new DataAndInfoTable(aDbCommand.ExecuteReader()); //時間計測終了 if (_debugPrint) { _stopwatch.Stop(); Trace.WriteLine("[" + _stopwatch.ElapsedMilliseconds.ToString() + "ms]" + Environment.NewLine); } //SQLを実行しDataTableオブジェクトをCachedResultsオブジェクトに格納して返す return(new CachedResults(aDataTable)); } catch (Exception ex) { throw new DbAccessException("SELECT文の実行に失敗しました.", sql, ex); } }
protected override void DisposeImp(bool disposing) { if (_aDataTable != null) { _aDataTable.Dispose(); _aDataTable = null; } }
public CachedResults(DataAndInfoTable aDataTable) { _aDataTable = aDataTable; _maxRows = _aDataTable.Rows.Count; _rowPos = -1; }