void IResultWriter.BeforeExecuteReader(AsyncDataAdapterCommand asyncDataAdapterCommand)
        {
            _beforeExecuteReaderTimestamp = Stopwatch.GetTimestamp();
            ++_commandCount;

            var command    = asyncDataAdapterCommand.Command;
            var message    = $"Command[{_commandCount - 1}] executing from line {asyncDataAdapterCommand.LineIndex + 1}...\r\n{command.CommandText}";
            var parameters = command.Parameters;

            if (!parameters.IsNullOrEmpty())
            {
                message += "\r\n" + command.Parameters.ToLogString();
            }

            _addInfoMessage(InfoMessageFactory.Create(InfoMessageSeverity.Verbose, null, message));

            _query = asyncDataAdapterCommand.Query;
            if (_query != null)
            {
                _fileName    = asyncDataAdapterCommand.FileName;
                _parameters  = asyncDataAdapterCommand.Parameters;
                _commandText = asyncDataAdapterCommand.CommandText;
                _results     = new List <Result>();
            }
        }
    private void ExecuteReader(AsyncDataAdapterCommand asyncDataAdapterCommand, IDbCommand command)
    {
        _resultWriter.BeforeExecuteReader(asyncDataAdapterCommand);
        IDataReader dataReader = null;

        try
        {
            dataReader = command.ExecuteReader();
            var fieldCount = dataReader.FieldCount;
            _resultWriter.AfterExecuteReader(fieldCount);
            var tableIndex = 0;

            while (!_thread.IsStopRequested)
            {
                if (fieldCount > 0)
                {
                    var schemaTable = dataReader.GetSchemaTable();
                    if (schemaTable != null)
                    {
                        Log.Trace("schemaTable:\r\n{0}", schemaTable.ToStringTableString());
                        if (asyncDataAdapterCommand.Query != null)
                        {
                            Parser.ParseResult(asyncDataAdapterCommand.Query.Results[tableIndex], out var name, out var fieldName);
                            schemaTable.TableName = name;
                        }
                    }

                    ReadTable(dataReader, schemaTable, tableIndex);
                }

                if (_rowCount >= _maxRecords || !dataReader.NextResult())
                {
                    break;
                }

                tableIndex++;
            }
        }
        finally
        {
            if (dataReader != null)
            {
                dataReader.Close();
                var recordsAffected = dataReader.RecordsAffected;
                _resultWriter.AfterCloseReader(recordsAffected);
            }
        }
    }
    private void Fill()
    {
        _resultWriter.Begin(_provider);

        try
        {
            foreach (var command in _commands)
            {
                _command = command;
                Fill(command);
                command.Command.Dispose();
            }
        }
        finally
        {
            _resultWriter.End();
            _writeEnd(this);
        }
    }
    private void Fill(AsyncDataAdapterCommand asyncDataAdapterCommand)
    {
        Assert.IsNotNull(asyncDataAdapterCommand);

        Exception exception = null;
        var       command   = asyncDataAdapterCommand.Command;

        try
        {
            ExecuteReader(asyncDataAdapterCommand, command);
        }
        catch (ThreadAbortException)
        {
            Thread.ResetAbort();
        }
        catch (Exception e)
        {
            if (Thread.CurrentThread.ThreadState == ThreadState.AbortRequested)
            {
                try
                {
                    Thread.ResetAbort();
                }
                catch
                {
                }
            }

            exception = e;
        }
        finally
        {
            if (command != null && command.Parameters != null)
            {
                _resultWriter.WriteParameters(command.Parameters);
            }

            _endFill(this, exception);
        }
    }
 void IResultWriter.BeforeExecuteReader(AsyncDataAdapterCommand command)
 {
 }
Exemple #6
0
 void IResultWriter.BeforeExecuteReader(AsyncDataAdapterCommand asyncDataAdapterCommand) => _logResultWriter.BeforeExecuteReader(asyncDataAdapterCommand);