public static Version GetVersionFromDatabase(DbConnectionStringBuilder builder) { using (var con = DatabaseCommandHelper.GetConnection(builder)) { con.Open(); var cmd = DatabaseCommandHelper.GetCommand(@"SELECT top 1 version from RoundhousE.Version order by version desc", con); var o = cmd.ExecuteScalar(); if (o == DBNull.Value) { return(new Version(0, 0, 0, 0)); } return(new Version(o.ToString())); } }
public DataTable TryGetPreview() { DataTable chunk = new DataTable(); using (var con = DatabaseCommandHelper.GetConnection(_builder)) { con.Open(); var da = DatabaseCommandHelper.GetDataAdapter(DatabaseCommandHelper.GetCommand(_sql, con)); int read = da.Fill(0, 100, chunk); if (read == 0) { return(null); } return(chunk); } }
public DataTable GetChunk(IDataLoadEventListener job, GracefulCancellationToken cancellationToken) { if (_reader == null) { _con = DatabaseCommandHelper.GetConnection(_builder); _con.Open(); job.OnNotify(this, new NotifyEventArgs(ProgressEventType.Information, "Running SQL:" + Environment.NewLine + Sql)); cmd = DatabaseCommandHelper.GetCommand(Sql, _con); cmd.CommandTimeout = _timeout; CommandAdjuster?.Invoke(cmd); _reader = cmd.ExecuteReaderAsync(cancellationToken.AbortToken).Result; _numberOfColumns = _reader.FieldCount; } int readThisBatch = 0; timer.Start(); try { DataTable chunk = GetChunkSchema(_reader); while (_reader.Read()) { AddRowToDataTable(chunk, _reader); readThisBatch++; //we reached batch limit if (readThisBatch == BatchSize) { return(chunk); } } //if data was read if (readThisBatch > 0) { return(chunk); } //data is exhausted //if data was exhausted on first read and we are allowing empty result sets if (firstChunk && AllowEmptyResultSets) { return(chunk);//return the empty chunk } //data exhausted return(null); } catch (Exception e) { job.OnNotify(this, new NotifyEventArgs(ProgressEventType.Error, "Source read failed", e)); throw; } finally { firstChunk = false; timer.Stop(); job.OnProgress(this, new ProgressEventArgs(_taskBeingPerformed, new ProgressMeasurement(TotalRowsRead, ProgressType.Records), timer.Elapsed)); } }