Delphi 2010中的dbExpress错误

时间:2009-09-03 20:58:06

标签: delphi delphi-2010 dbexpress

以下代码适用于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 >>   
---------------------------

当我将“connected”设置为“true”时会引发异常。

我尝试将“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;

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-2)

请在此处查看问题和解决方法:My Blog

用你的dll代替我在帖子中提到的那个。你应该在同一个目录中找到它。