1

下面的代码在 Delphi 2007 中工作,但它在 Delphi 2010 中给了我这个错误:

---------------------------
Error
---------------------------
Cannot load oci.dll library (error code 127).
The oci.dll library may be missing from the system path
or you may have an incompatible version of the
library installed.
---------------------------
OK   Details >>   
---------------------------

当我将“已连接”设置为“真”时引发异常。

我尝试将“oci.dll”的副本放在与 .exe 文件相同的文件夹中,但我得到了相同的消息。

使用表单设计器和可见的 TSQLConnection 组件时,我也会收到此消息。

有什么想法吗?

function TDBExpressConnector.GetConnection(username, password, servername: string) : TSQLConnection;
begin
  //take a username, password, and server
  //return a connected TSQLConnection
  try
    FSqlDB := TSQLConnection.Create(nil);
    with FSqlDB do begin
      Connected := False;
      DriverName := 'Oracle';
      GetDriverFunc := 'getSQLDriverORACLE';
      KeepConnection := True;
      LibraryName := 'dbxora30.dll';
      ConnectionName := 'OracleConnection';;

      Params.Clear;
      Params.Add('DriverName=Oracle');
      Params.Add('DataBase=' + servername);
      Params.Add('User_Name=' + username);
      Params.Add('Password=' + password);
      Params.Add('RowsetSize=20');
      Params.Add('BlobSize=-1');
      Params.Add('ErrorResourceFile=');
      Params.Add('LocaleCode=0000');
      Params.Add('Oracle TransIsolation=ReadCommited');
      Params.Add('OS Authentication=False');
      Params.Add('Multiple Transaction=False');
      Params.Add('Trim Char=False');
      Params.Add('Decimal Separator=.');

      LoginPrompt := False;
      Connected := True;
    end;

    Result := FSqlDB;
  except on e:Exception do
    raise;
  end;  //try-except
end;
4

2 回答 2

0

在 Delphi 2010 中,用于 Oracle 的 dbExpress 驱动程序是 dbxora.dll。命名连接中的库名称为 dbxora30.dll。很有可能它会使用正确的名称!

于 2009-09-18T19:19:13.747 回答
-2

在此处查看问题和解决方法:我的博客

只需将您的 dll 替换为我在帖子中提到的那个。您应该在同一目录中找到它。

于 2010-11-25T18:06:54.210 回答