以下代码适用于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;
答案 0 :(得分:0)
在Delphi 2010中,Oracle的dbExpress驱动程序是dbxora.dll。命名连接中的库名称为dbxora30.dll。很有可能它会使用正确的名称!
答案 1 :(得分:-2)
请在此处查看问题和解决方法:My Blog
用你的dll代替我在帖子中提到的那个。你应该在同一个目录中找到它。