如何检查系统上是否安装了OLEDB驱动程序?

Kar*_*ist 14 delphi oledb ado

在启动应用程序时,如何确保安装某个OLEDB驱动程序?我使用Delphi的ADO,如果缺少驱动程序,则希望显示描述性错误消息.从ADO返回的错误并不总是那么用户友好.

可能有一个很好的小函数返回所有已安装的驱动程序,但我还没有找到它.

Rog*_*eda 9

这是一个老问题,但我现在遇到了同样的问题,也许这可以帮助别人.

在Delphi 7中,ADODB中有一个过程,它返回带有提供者名称的TStringList.

用法示例:

names := TStringList.Create;
ADODB.GetProviderNames(names);

if names.IndexOf('SQLNCLI10')<>-1 then
  st := 'Provider=SQLNCLI10;'
else if names.IndexOf('SQLNCLI')<>-1 then
  st := 'Provider=SQLNCLI;'
else if names.IndexOf('SQLOLEDB')<>-1 then
  st := 'Provider=SQLOLEDB;';
Run Code Online (Sandbox Code Playgroud)

  • 很高兴你发布答案 - 即使它确实是几年之后. (3认同)

Jer*_*lin 3

每个提供程序都有一个与其类关联的 GUID。要查找 GUID,请打开 regedit 并在注册表中搜索提供程序名称。例如,搜索“Microsoft Jet 4.0 OLE DB 提供程序”。找到它后,复制该密钥(GUID 值)并在应用程序的注册表搜索中使用它。

function OleDBExists : boolean;
var
  reg : TRegistry;
begin
  Result := false;

  // See if Advantage OLE DB Provider is on this PC
  reg := TRegistry.Create;
  try
    reg.RootKey := HKEY_LOCAL_MACHINE;
    Result := reg.OpenKeyReadOnly( '\SOFTWARE\Classes\CLSID\{C1637B2F-CA37-11D2-AE5C-00609791DC73}' );
  finally
    reg.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)