/// <summary> /// Creates the table. /// </summary> /// <param name="table">The table.</param> /// <param name="collection">The collection.</param> private void CreateTable(ref DataTable table, IDfCollection collection) { if (table != null) { return; } table = new DataTable(); DqlDataType converter = new DqlDataType(); IDfTypedObject typedObj = collection.getTypedObject(); IDfAttr attr = null; int count = collection.getAttrCount(); for (int i = 0; i < count; i++) { attr = collection.getAttr(i); string field = attr.getName(); tagDfValueTypes dataType = attr.isRepeating() ? tagDfValueTypes.DF_STRING : (tagDfValueTypes)attr.getDataType(); if (converter.ContainsKey(dataType)) { table.Columns.Add(converter[dataType](field)); } } typedObj = null; attr = null; }
/// <summary> /// Fills the specified data set. /// </summary> /// <param name="dataSet">The data set.</param> /// <param name="token">The token.</param> /// <returns>System.Int32.</returns> public int Fill(DataSet dataSet, CancellationToken token) { DqlReader formatter = new DqlReader(); List <DqlCommand> commands = new List <DqlCommand>(); command.CommandText.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries) .ToList().Where(w => string.IsNullOrEmpty(w) == false).ToList() .ForEach(commandText => commands.Add(new DqlCommand(commandText, (DqlConnection)command.Connection))); foreach (var cmd in commands) { if (token.IsCancellationRequested) { throw new OperationCanceledException("A cancellation token associated with this operation was canceled"); } DqlConnection cn = cmd.Connection; if (cn == null) { throw new Exception("Connection is null"); } IDfCollection records = cn.ExecuteQuery(cmd); DataTable table = null; IDfTypedObject typedObj = null; #region Row Iterator while (records.next()) { if (token.IsCancellationRequested) { throw new OperationCanceledException("A cancellation token associated with this operation was canceled"); } CreateTable(ref table, records); typedObj = records.getTypedObject(); DataRow row = table.NewRow(); table.Rows.Add(row); #region Column Iterator int count = records.getAttrCount(); for (int i = 0; i < count; i++) { var collection = records; IDfAttr attr = collection.getAttr(i); string field = attr.getName(); if (formatter.ContainsKey((tagDfValueTypes)attr.getDataType())) { row[field] = formatter[(tagDfValueTypes)attr.getDataType()](attr, collection); } } #endregion } #endregion records.close(); records = null; typedObj = null; if (table != null) { dataSet.Tables.Add(table); } } commands.ForEach(item => item.Dispose()); return(1); }