OleDB Enumerator
От: muzhig  
Дата: 24.04.10 09:10
Оценка:
Как получить список доступных в системе провайдеров OleDB, отделавшись меньшей кровью? Мне тупо нужен список, и все!

Вот например, в дельфи кидаю ADOconnection на форму, у него есть свойство Provider- открывается список доступных провайдеров. Мне нужен точно такой же!

Хоть на чем- хоть Delphi, хоть C# C++ можно даже Dll или указать на ветку реестра где провайдеры регистрируются- за любой из вариантов СПАСИБО!
OleDB Enumerator список провайдеров перечень провайдеров
Re: OleDB Enumerator
От: wellwell Австралия https://www.softperfect.com
Дата: 24.04.10 09:56
Оценка: 8 (2)
"muzhig" <92191@users.rsdn.ru> wrote in message news:3785895@news.rsdn.ru...
> Как получить список доступных в системе провайдеров OleDB, отделавшись меньшей кровью? Мне тупо нужен список, и все!
> Вот например, в дельфи кидаю ADOconnection на форму, у него есть свойство Provider- открывается список доступных провайдеров. Мне нужен точно такой же!
> Хоть на чем- хоть Delphi, хоть C# C++ можно даже Dll или указать на ветку реестра где провайдеры регистрируются- за любой из вариантов СПАСИБО!

Ну так оно и есть в исходниках Дельфи (ADODB.pas):

procedure GetProviderNames(Names: TWideStrings);
var
  RSCon: ADORecordsetConstruction;
  Rowset: IRowset;
  SourcesRowset: ISourcesRowset;
  SourcesRecordset: _Recordset;
  SourcesName, SourcesType: TField;
begin
  SourcesRecordset := CreateADOObject(CLASS_Recordset) as _Recordset;
  RSCon := SourcesRecordset as ADORecordsetConstruction;
  SourcesRowset := CreateComObject(CLSID_OLEDB_ENUMERATOR) as ISourcesRowset;
  OleCheck(SourcesRowset.GetSourcesRowset(nil, IRowset, 0, nil, IUnknown(Rowset)));
  RSCon.Rowset := RowSet;
  with TADODataSet.Create(nil) do
  try
    Recordset := SourcesRecordset;
    First;
    SourcesName := FieldByName('SOURCES_NAME'); { do not localize }
    SourcesType := FieldByName('SOURCES_TYPE'); { do not localize }
    Names.BeginUpdate;
    try
      while not EOF do
      begin
        if SourcesType.AsInteger = DBSOURCETYPE_DATASOURCE then
          Names.Add(SourcesName.AsWideString);
        Next;
      end;
    finally
      Names.EndUpdate;
    end;
  finally
    Free;
  end;
end;
Posted via RSDN NNTP Server 2.1 beta
Re[2]: OleDB Enumerator
От: muzhig  
Дата: 24.04.10 11:50
Оценка:
Здравствуйте, wellwell, Вы писали:

W>Ну так оно и есть в исходниках Дельфи (ADODB.pas):

W>procedure GetProviderNames(Names: TWideStrings);

Спасибо огромное! то что надо!
OleDB Enumerator список провайдеров перечень провайдеров
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.