コード例 #1
0
        /// <summary>
        /// Executes the command text against the connection.
        /// </summary>
        /// <returns>
        /// A task representing the operation.
        /// </returns>
        /// <param name="behavior">An instance of <see cref="T:System.Data.CommandBehavior"/>.</param><exception cref="T:System.Data.Common.DbException">An error occurred while executing the command text.</exception><exception cref="T:System.ArgumentException">An invalid <see cref="T:System.Data.CommandBehavior"/> value.</exception>
        protected override DbDataReader ExecuteDbDataReader(CommandBehavior behavior)
        {
            var channel = m_connection.BeginExecuteCommand(this);

            try
            {
                var dataRequest = CreateRequest(false, !behavior.HasFlag(CommandBehavior.SchemaOnly));

                var response     = SendCommand(channel, dataRequest, CreateRequestParams(), null);
                var streamHolder = PqlDataConnection.ReaderStreams.Take(m_connection.CancellationTokenSource.Token);
                try
                {
                    streamHolder.Item.Attach(response.Stream);
                    return(new PqlDataReader(m_connection, streamHolder.Item, streamHolder, response));
                }
                catch
                {
                    streamHolder.Dispose();
                    response.Close();
                    throw;
                }
            }
            catch
            {
                m_connection.ConfirmExecutionCompletion(false);
                throw;
            }
        }
コード例 #2
0
ファイル: TDengineDataReader.cs プロジェクト: qaz734913414/X
        /// <summary>关闭读取器</summary>
        public override void Close()
        {
            if (_behavior.HasFlag(CommandBehavior.CloseConnection))
            {
                _command.Connection.Close();
            }

            if (_handler != IntPtr.Zero)
            {
                TD.FreeResult(_handler);
            }
            _handler = IntPtr.Zero;
        }
コード例 #3
0
 public static XmlDocument QueryXml(
     this SqlConnection connection,
     string sql,
     object parameters               = null,
     CommandType commandType         = CommandType.StoredProcedure,
     CommandBehavior commandBehavior = CommandBehavior.Default,
     int?commandTimeout              = null,
     IDbTransaction transaction      = null,
     object outputParameters         = null)
 {
     return(connection.ExecuteAndAutoClose(
                c =>
     {
         using (var cmd = (SqlCommand)c.CreateCommand(sql, parameters, commandType, commandTimeout, transaction))
         {
             cmd.OutputParameters(outputParameters);
             return cmd.ExecuteXml();
         }
     },
                commandBehavior.HasFlag(CommandBehavior.CloseConnection)));
 }
コード例 #4
0
		public static XmlDocument QueryXml(
            this SqlConnection connection,
            string sql,
            object parameters = null,
            CommandType commandType = CommandType.StoredProcedure,
            CommandBehavior commandBehavior = CommandBehavior.Default,
            int? commandTimeout = null,
            IDbTransaction transaction = null,
            object outputParameters = null)
        {
            return connection.ExecuteAndAutoClose(
                c =>
                {
                    using (var cmd = (SqlCommand)c.CreateCommand(sql, parameters, commandType, commandTimeout, transaction))
                    {
                        cmd.OutputParameters(outputParameters);
                        return cmd.ExecuteXml();
                    }
                },
                commandBehavior.HasFlag(CommandBehavior.CloseConnection));
        }
コード例 #5
0
        public static SqlDataReader ExecuteReader(
            this string connectionString,
            string commandText,
            int commandTimeoutInSeconds = 30,
            IReadOnlyList<SqlParameter> commandParameters = null,
            CommandType commandType = CommandType.Text,
            CommandBehavior commandBehavior = CommandBehavior.CloseConnection,
            bool prepareCommand = false,
            SqlInfoMessageEventHandler sqlInfoMessageEventHandler = null)
        {
            if (!commandBehavior.HasFlag(CommandBehavior.CloseConnection))
            {
                throw new ArgumentException(Invariant($"{nameof(commandBehavior)} does not set the flag {CommandBehavior.CloseConnection}.  This will result in an open connection with the caller having no means of closing it."));
            }

            var connection = OpenSqlConnection(connectionString, sqlInfoMessageEventHandler);

            var result = connection.ExecuteReader(commandText, commandTimeoutInSeconds, commandParameters, commandType, null, commandBehavior, prepareCommand);

            return result;
        }
コード例 #6
0
        public PostgresDbDataReader(
            CommandBehavior behavior,
            PostgresDbConnectionBase connection,
            PostgresCommand command,
            CancellationToken cancellationToken)
        {
            _behavior          = behavior;
            _connection        = connection;
            _command           = command;
            _cancellationToken = cancellationToken;

            _behaviorCloseConnection = behavior
                                       .HasFlag(CommandBehavior.CloseConnection);
            _behaviorKeyInfo = behavior
                               .HasFlag(CommandBehavior.KeyInfo);
            _behaviorSchemaOnly = behavior
                                  .HasFlag(CommandBehavior.SchemaOnly);
            _behaviorSequentialAccess = behavior
                                        .HasFlag(CommandBehavior.SequentialAccess);
            _behaviorSinglaResult = behavior
                                    .HasFlag(CommandBehavior.SingleResult);
            _behaviorSingleRow = behavior
                                 .HasFlag(CommandBehavior.SingleRow);
        }
コード例 #7
0
ファイル: FbDataReader.cs プロジェクト: eksotama/NETProvider
 private bool IsCommandBehavior(CommandBehavior behavior)
 {
     return(_commandBehavior.HasFlag(behavior));
 }
コード例 #8
0
        /// <summary>
        /// Executes the command text against the connection.
        /// </summary>
        /// <returns>
        /// A task representing the operation.
        /// </returns>
        /// <param name="behavior">An instance of <see cref="T:System.Data.CommandBehavior"/>.</param><exception cref="T:System.Data.Common.DbException">An error occurred while executing the command text.</exception><exception cref="T:System.ArgumentException">An invalid <see cref="T:System.Data.CommandBehavior"/> value.</exception>
        protected override DbDataReader ExecuteDbDataReader(CommandBehavior behavior)
        {
            var channel = m_connection.BeginExecuteCommand(this);
            try
            {
                var dataRequest = CreateRequest(false, !behavior.HasFlag(CommandBehavior.SchemaOnly));

                var response = SendCommand(channel, dataRequest, CreateRequestParams(), null);
                var streamHolder = PqlDataConnection.ReaderStreams.Take(m_connection.CancellationTokenSource.Token);
                try
                {
                    streamHolder.Item.Attach(response.Stream);
                    return new PqlDataReader(m_connection, streamHolder.Item, streamHolder, response);
                }
                catch
                {
                    streamHolder.Dispose();
                    response.Close();
                    throw;
                }
            }
            catch
            {
                m_connection.ConfirmExecutionCompletion(false);
                throw;
            }
        }
コード例 #9
0
ファイル: DataTestGroup.cs プロジェクト: pgovind/runtime
        protected async virtual Task CommandExecuteAsync(Random rnd, DbCommand com, bool query)
        {
            CancellationTokenSource cts = null;

            // Cancel 1/10 commands
            Task cancelTask    = null;
            bool cancelCommand = rnd.NextBool(0.1);

            if (cancelCommand)
            {
                if (rnd.NextBool())
                {
                    // Use DbCommand.Cancel
                    cancelTask = Task.Run(() => CommandCancel(com));
                }
                else
                {
                    // Use CancellationTokenSource
                    if (cts == null)
                    {
                        cts = new CancellationTokenSource();
                    }
                    cancelTask = Task.Run(() => cts.Cancel());
                }
            }

            // Get the CancellationToken
            CancellationToken token = (cts != null) ? cts.Token : CancellationToken.None;

            DataStressReader reader = null;

            try
            {
                if (query)
                {
                    CommandBehavior commandBehavior = CommandBehavior.Default;
                    if (rnd.NextBool(0.5))
                    {
                        commandBehavior |= CommandBehavior.SequentialAccess;
                    }
                    if (rnd.NextBool(0.25))
                    {
                        commandBehavior |= CommandBehavior.KeyInfo;
                    }
                    if (rnd.NextBool(0.1))
                    {
                        commandBehavior |= CommandBehavior.SchemaOnly;
                    }

                    // Get the reader
                    reader = new DataStressReader(await com.ExecuteReaderSyncOrAsync(commandBehavior, token, rnd));

                    // Consume the reader's data
                    await ConsumeReaderAsync(reader, commandBehavior.HasFlag(CommandBehavior.SequentialAccess), token, rnd);
                }
                else
                {
                    await com.ExecuteNonQuerySyncOrAsync(token, rnd);
                }
            }
            catch (Exception e)
            {
                if (cancelCommand && IsCommandCancelledException(e))
                {
                    // Catch command canceled exception
                }
                else
                {
                    throw;
                }
            }
            finally
            {
                if (cancelTask != null)
                {
                    AsyncUtils.WaitAndUnwrapException(cancelTask);
                }
                if (reader != null && ShouldCloseDataReader())
                {
                    reader.Close();
                }
            }
        }