/// <see cref="NI.Data.IDalc.ExecuteReader(System.String,System.Action<System.Data.IDataReader>)"/> public virtual void ExecuteReader(Query q, Action <IDataReader> callback) { using (var cmd = CommandGenerator.ComposeSelect(q)) { cmd.Connection = Connection; ExecuteReaderInternal(cmd, q.Table, callback); } }
/// <see cref="NI.Data.IDalc.Load(NI.Data.Query,System.Data.DataSet)"/> public virtual DataTable Load(Query query, DataSet ds) { using (var selectCmd = CommandGenerator.ComposeSelect(query)) { QTable source = query.Table; selectCmd.Connection = Connection; OnCommandExecuting(source.Name, StatementType.Select, selectCmd); var adapter = DbFactory.CreateDataAdapter(OnRowUpdating, OnRowUpdated); try { adapter.SelectCommand = selectCmd; if (adapter is DbDataAdapter) { ((DbDataAdapter)adapter).Fill(ds, query.StartRecord, query.RecordCount, source.Name); } else { adapter.Fill(ds); } } finally { // some implementations are sensitive to explicit dispose if (adapter is IDisposable) { ((IDisposable)adapter).Dispose(); } } OnCommandExecuted(source.Name, StatementType.Select, selectCmd); return(ds.Tables[source.Name]); } }