原生ADO + oracle9i的问题

mrchen_fj 2003-12-03 04:18:11
请教大虾:
我用ADO访问oracle9i,退出后出现异常;而改成访问access却没有异常。
当我执行ButtonAccess后,关闭FORM,则正常退出。当我执行ButtonOra时,关闭FORM,则报异常。请高手指教。

原码如下:

unit UnitFormMain;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,adodb, StdCtrls, DB,ADOInt, Grids, DBGrids,ComObj;

type
TForm1 = class(TForm)
ButtonOra: TButton;
ButtonAccess: TButton;
procedure ButtonOraClick(Sender: TObject);
procedure ButtonAccessClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ButtonOraClick(Sender: TObject);
var
objRec : adodb._recordset;
objConn : adodb._Connection;
strSql : string;
begin
objConn := adodb._connection(CreateOleObject('ADODB.CONNECTION'));
objRec := AdoDb._Recordset(CreateOleObject('ADODB.RECORDSET'));
objConn.Open('Provider=MSDAORA.1;Password=tiger;User ID=scott;
Data Source=ora;Persist Security Info=True','','',
adConnectUnspecified);
objRec.LockType := adLockReadOnly;
objRec.CursorLocation := adOpenStatic;

strSql := 'select * from tab';

objrec.Open(strSql,objConn,adOpenStatic,adLockReadOnly,0);

AdoDataset1.Recordset := objRec;
AdoDataset1.Active := true;

objConn := nil;
objRec := nil;
end;

procedure TForm1.ButtonAccessClick(Sender: TObject);
var
objRec : adodb._recordset;
objConn : adodb._Connection;
strSql : string;
begin
objConn := adodb._connection(CreateOleObject('ADODB.CONNECTION'));
objRec := AdoDb._Recordset(CreateOleObject('ADODB.RECORDSET'));
objConn.Open('Driver={Microsoft Access Driver
(*.mdb)};DBQ=c:\visualtopo\xian','','',
adConnectUnspecified);

strSql := 'select * from sbb';

objrec.Open(strSql,objConn,adOpenStatic,adLockOptimistic,MB_OKCANCEL);
/// ......
objConn := nil;
objRec := nil;
end;

end.
...全文
48 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mrchen_fj 2003-12-04
  • 打赏
  • 举报
回复
请各位指教。拜托了
mrchen_fj 2003-12-03
  • 打赏
  • 举报
回复
To outer2000(天外流星) and Erice(白雪公猪) :
执行FreeAndNil 时,就出错!
另:我拷上代码时,弄错了,原代码是:
objRec := nil;
objConn := nil;

请高手指教!

Erice 2003-12-03
  • 打赏
  • 举报
回复
也可以成(你出错的代码:)
objRec := nil;
objConn := nil;
Erice 2003-12-03
  • 打赏
  • 举报
回复
先关闭两个原生对象
objrec.close;
objconn.close;
然后再释放!!
outer2000 2003-12-03
  • 打赏
  • 举报
回复
objconn.close;
objrec.close;
freeandnil(objConn);
freeandnil(objRec);
看看这样可以吗?

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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