Как получить список доступных в системе провайдеров OleDB, отделавшись меньшей кровью? Мне тупо нужен список, и все!
Вот например, в дельфи кидаю ADOconnection на форму, у него есть свойство Provider- открывается список доступных провайдеров. Мне нужен точно такой же!
Хоть на чем- хоть Delphi, хоть C# C++ можно даже Dll или указать на ветку реестра где провайдеры регистрируются- за любой из вариантов СПАСИБО!
"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
Здравствуйте, wellwell, Вы писали:
W>Ну так оно и есть в исходниках Дельфи (ADODB.pas):
W>procedure GetProviderNames(Names: TWideStrings);
Спасибо огромное!
то что надо!