IEnumerable <ITreeNode> ITreeNode.GetChildren(bool refresh)
        {
            var cb = new SqlCommandBuilder();

            var commandText = string.Format(@"select
    i.name,
    i.index_id,
    i.type,
    i.is_unique
from {0}.sys.schemas s (nolock)
join {0}.sys.objects o (nolock)
    on s.schema_id = o.schema_id
join {0}.sys.indexes i (nolock)
    on o.object_id = i.object_id
where o.object_id = @object_id
order by i.name",
                                            cb.QuoteIdentifier(_databaseNode.Name));

            var parameters = new SqlParameterCollectionBuilder();

            parameters.Add("object_id", _id);
            var request = new ExecuteReaderRequest(commandText, parameters.ToReadOnlyCollection());

            var connectionString = _databaseNode.Databases.Server.ConnectionString;
            var executor         = new SqlCommandExecutor(connectionString);

            return(executor.ExecuteReader(request, 128, dataRecord =>
            {
                var name = dataRecord.GetStringOrDefault(0);
                var indexId = dataRecord.GetInt32(1);
                var type = dataRecord.GetByte(2);
                var isUnique = dataRecord.GetBoolean(3);
                return new IndexNode(_databaseNode, _id, indexId, name, type, isUnique);
            }));
        }
    public static DataTable ExecuteDataTable(this IDbCommandExecutor executor, ExecuteReaderRequest request)
    {
        Assert.IsNotNull(executor);
        DataTable dataTable = null;

        executor.Execute(request.CreateCommandRequest, command => { dataTable = command.ExecuteDataTable(request.CancellationToken); });
        return(dataTable);
    }
示例#3
0
    public static ReadOnlySegmentLinkedList <T> ExecuteReader <T>(this DbProviderFactory dbProviderFactory, string connectionString,
                                                                  ExecuteReaderRequest request, int segmentLength, Func <IDataRecord, T> readRecord)
    {
        ReadOnlySegmentLinkedList <T> rows = null;

        dbProviderFactory.ExecuteReader(connectionString, request, dataReader => rows = dataReader.ReadResult(segmentLength, readRecord));
        return(rows);
    }
    public static DataSet ExecuteDataSet(this IDbCommandExecutor executor, ExecuteReaderRequest request)
    {
        ArgumentNullException.ThrowIfNull(executor);
        ArgumentNullException.ThrowIfNull(request);
        DataSet dataSet = null;

        executor.Execute(request.CreateCommandRequest, command => { dataSet = command.ExecuteDataSet(request.CancellationToken); });
        return(dataSet);
    }
示例#5
0
 public static Task ExecuteReaderAsync(this IDbCommandAsyncExecutor executor, ExecuteReaderRequest request, Func <DbDataReader, Task> readResults)
 {
     return(executor.ExecuteAsync(
                new ExecuteNonReaderRequest(request.CreateCommandRequest, request.CancellationToken),
                async command =>
     {
         using (var dataReader = await command.ExecuteReaderAsync(request.CommandBehavior, request.CancellationToken))
             await readResults(dataReader);
     }));
 }
    public static void ExecuteReader(this IDbCommandExecutor executor, ExecuteReaderRequest request, Action <IDataReader> readResults)
    {
        Assert.IsNotNull(executor);
        Assert.IsNotNull(request);

        executor.Execute(request.CreateCommandRequest, command =>
        {
            using (var dataReader = command.ExecuteReader(request.CommandBehavior))
                readResults(dataReader);
        });
    }
        IEnumerable <ITreeNode> ITreeNode.GetChildren(bool refresh)
        {
            const string commandText = @"select name
from sys.server_principals sp (nolock)
where   sp.type in('S','U','G')
order by name";
            var          request     = new ExecuteReaderRequest(commandText);
            var          executor    = new SqlCommandExecutor(_server.ConnectionString);

            return(executor.ExecuteReader(request, 128, dataRecord => new LoginNode(dataRecord.GetString(0))));
        }
示例#8
0
    IEnumerable <ITreeNode> ITreeNode.GetChildren(bool refresh)
    {
        var          connectionString     = _databaseCollectionNode.Server.ConnectionString;
        const string commandText          = @"select name
from sys.databases d
where
	d.source_database_id is not null
order by 1";
        var          executeReaderRequest = new ExecuteReaderRequest(commandText);

        return(SqlClientFactory.Instance.ExecuteReader(connectionString, executeReaderRequest, 128, ReadDatabaseNode));
    }
示例#9
0
        private async Task <GetInvoicesDbQueryResult> ExecuteReaderAsync(ExecuteReaderRequest request)
        {
            GetInvoicesDbQueryResult result = null;
            var connection = (DbConnection)_connection;
            var executor   = connection.CreateCommandAsyncExecutor();
            await executor.ExecuteReaderAsync(request, async dataReader =>
            {
                var invoices = (await dataReader.ReadResultAsync(128, ReadInvoice, request.CancellationToken));
                result       = new GetInvoicesDbQueryResult(invoices);
            });

            return(result);
        }
示例#10
0
        private GetInvoicesDbQueryResult ExecuteReader(ExecuteReaderRequest request)
        {
            GetInvoicesDbQueryResult result = null;
            var executor = _connection.CreateCommandExecutor();

            executor.ExecuteReader(request, dataReader =>
            {
                var invoices = dataReader.ReadResult(128, ReadInvoice);
                result       = new GetInvoicesDbQueryResult(invoices);
            });

            return(result);
        }
示例#11
0
    IEnumerable <ITreeNode> ITreeNode.GetChildren(bool refresh)
    {
        const string commandText = @"declare @provider nvarchar(128)
select  @provider = s.provider
from    sys.servers s (nolock)
where   s.name = @name

create table #catalog
(
    CATALOG_NAME    nvarchar(128),
    DESCRIPTION     nvarchar(255)
)

insert into #catalog execute sp_catalogs 'UKSECPRSD98\EUR'

if @provider = 'SQLNCLI'
begin
    select  c.CATALOG_NAME
    from    #catalog c
    where
        (@getSystemCatalogs = 0 and c.CATALOG_NAME not in('master','model','msdb','tempdb'))
        or
        (@getSystemCatalogs = 1 and c.CATALOG_NAME in('master','model','msdb','tempdb'))
    order by c.CATALOG_NAME
end
else
begin
    select  c.CATALOG_NAME
    from    #catalog c
    order by c.CATALOG_NAME
end

drop table #catalog";

        using (var connection = new SqlConnection(_linkedServer.LinkedServers.Server.ConnectionString))
        {
            connection.Open();

            var parameters = new SqlParameterCollectionBuilder();
            parameters.Add("@name", _linkedServer.Name);
            parameters.Add("@getSystemCatalogs", false);

            var executor             = connection.CreateCommandExecutor();
            var executeReaderRequest = new ExecuteReaderRequest(commandText, parameters.ToReadOnlyCollection());
            return(executor.ExecuteReader(executeReaderRequest, 128,
                                          dataRecord => new LinkedServerCatalogNode(_linkedServer, dataRecord.GetString(0))));
        }
    }
    public static ReadOnlySegmentLinkedList <T> ExecuteReader <T>(this IDbCommandExecutor executor, ExecuteReaderRequest request, int segmentLength,
                                                                  Func <IDataRecord, T> readRecord)
    {
        Assert.IsNotNull(executor);
        ReadOnlySegmentLinkedList <T> rows = null;

        executor.ExecuteReader(request, dataReader => rows = dataReader.ReadResult(segmentLength, readRecord));
        return(rows);
    }
示例#13
0
 public static void ExecuteReader(this DbProviderFactory dbProviderFactory, string connectionString, ExecuteReaderRequest request,
                                  Action <IDataReader> read)
 {
     using (var connection = dbProviderFactory.CreateConnection())
     {
         connection.ConnectionString = connectionString;
         connection.Open();
         var executor = connection.CreateCommandExecutor();
         executor.ExecuteReader(request, read);
     }
 }
示例#14
0
    public static async Task <ReadOnlySegmentLinkedList <T> > ExecuteReaderAsync <T>(this IDbCommandAsyncExecutor executor, ExecuteReaderRequest request,
                                                                                     int segmentLength, Func <IDataRecord, T> read)
    {
        ReadOnlySegmentLinkedList <T> records = null;
        await executor.ExecuteReaderAsync(
            request,
            async dataReader => records = await dataReader.ReadResultAsync(segmentLength, read, request.CancellationToken));

        return(records);
    }