我用的是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;interfaceuses
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的哪里的设置不对。哪位高人来指点一下?
分不够还可以另开帖子送分。多谢!
'Provider=MSDAORA.1;Password=mypwd;User ID=myname;Data Source=mydb;Persist Security Info=True'
用户名:myname
密码:mypwd
网络服务名:mydb主窗体上只有一个TADOConnection控件和一个TButton控件。单击TButton控件,连接数据库。程序中主窗体Unit文件如下:unit MainFrm;interfaceuses
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的哪里的设置不对。哪位高人来指点一下?
分不够还可以另开帖子送分。多谢!
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;