• 全部
  • 语言基础/算法/系统设计
  • 数据库相关
  • 图形处理/多媒体
  • 网络通信/分布式开发
  • VCL组件开发及应用
  • Windows SDK/API
  • 问答

原生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.
...全文
26 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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);
看看这样可以吗?
回复
相关推荐
发帖
Delphi
创建于2007-08-02

4891

社区成员

Delphi 开发及应用
申请成为版主
帖子事件
创建了帖子
2003-12-03 04:18
社区公告
暂无公告