奇怪:Delphi用ADO连接Oracle出错:Ora-06413:连接未打开,exe文件换个目录又好了?

icbm 2003-08-06 12:42:07
我用的是Windows 2000 Advanced Server、 Delphi 7 企业版、 Oracle 9i Release 2。

Oracle连接字符串用UDL文件生成,连接测试成功。如下:
'Provider=MSDAORA.1;Password=mypwd;User ID=myname;Data Source=mydb;Persist Security Info=True'
用户名:myname
密码:mypwd
网络服务名:mydb

主窗体上只有一个TADOConnection控件和一个TButton控件。单击TButton控件,连接数据库。

程序中主窗体Unit文件如下:

unit MainFrm;

interface

uses


Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, DB, ADODB, Buttons;

type
TfrmMain = class(TForm)
cnnOracle: TADOConnection;
btTestConn: TButton;
procedure btTestConnClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
frmMain: TfrmMain;

implementation

{$R *.dfm}

procedure TfrmMain.btTestConnClick(Sender: TObject);
begin
cnnOracle.ConnectionString := 'Provider=MSDAORA.1;Password=mypwd;User ID=myname;Data Source=mydb;Persist Security Info=True';
try
if (cnnOracle.Connected) then cnnOracle.Close;
try
cnnOracle.ConnectionString := ConnStr;
cnnOracle.Open;
ShowMessage('Connected!');
finally
cnnOracle.Close;
end;
except
{Oracle数据库连接失败}
end;
end;

end.

编译成功后,运行程序。点击btTestConn按钮后提示:
Debugger Exception Notification
Project DBConnTest.exe raised exception class EOleException with message 'ORA-06413:连接未打开'.
Process stopped. Use Step or Run to continue.

而且在生成的exe文件的目录下,多出一个sqlnet.log文件,内容如下。

***********************************************************************
Fatal NI connect error 6413, connecting to:
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=BEQ)(PROGRAM=oracle)(ARGV0=oraclemydb)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))')))(CONNECT_DATA=(SID=mydb)(CID=(PROGRAM=F:\U\DTrueMaker3(Oracle)\DBConnTest\DBConnTest.exe)(HOST=SUFE-HAPPY)(USER=Administrator))))

VERSION INFORMATION:
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
Time: 06-8月 -2003 12:25:23
Tracing not turned on.


但是把生成的exe文件复制到其它目录下,却运行正常,能够连接到Oracle。

我觉得程序可能没有问题,可能是Delphi的哪里的设置不对。

哪位高人来指点一下?
分不够还可以另开帖子送分。

多谢!

...全文
274 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sfwss 2003-10-14
  • 打赏
  • 举报
回复
可能是你的目录名有括号吧!!
李_军 2003-08-06
  • 打赏
  • 举报
回复
procedure TfrmMain.btTestConnClick(Sender: TObject);
begin
cnnOracle.ConnectionString := 'Provider=MSDAORA.1;Password=mypwd;User ID=myname;Data Source=mydb;Persist Security Info=True';
try
if (cnnOracle.Connected) then cnnOracle.Close;
try
cnnOracle.ConnectionString := ConnStr;
cnnOracle.Open;
if cnnOracle.Connected then
ShowMessage('Connected!');
finally
cnnOracle.Close;
end;
except
{Oracle数据库连接失败}
end;
end;

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧