我用程序继承了一个TADOCONNECTION对象
如何设置他的ONDisconnect事件请大家讨论我的程序
-------------------------
unit fConnection;interface
uses ADODB,fDBSet,Dialogs;type
TDBConnection = class(TADOConnection)
procedure connectionBreak(Connection: TADOConnection ; var EventStatus: TEventStatus);
private
public
constructor create(var db_set:TDBSet);
destructor destroy();override;end;implementation constructor TDBConnection.create(var db_set:TDBSet);
var eventStatus:TEventStatus;
begin
inherited create(nil);
self.ConnectionString := 'Provider=SQLOLEDB.1;User ID=''' + db_set.getUserName() + ';Initial Catalog=''' + db_set.getDatabaseName + ';Data Source=''' + db_set.getServerName + '''';
if db_set.getPassword <> 'no' then
self.ConnectionString := self.ConnectionString + 'Password=''' + db_set.getPassword() + '''';
writeln(self.ConnectionString);
self.Open();
self.OnDisconnect := self.connectionBreak(self ,eventStatus);
end; destructor TDBConnection.destroy();
begin
self.Close;
self.Free;
inherited;
end; procedure TDBConnection.connectionBreak(Connection: TADOConnection;
var EventStatus: TEventStatus);
begin
ShowMessage('数据库服务器连接中断!程序退出.');
halt;
end;end.
如何设置他的ONDisconnect事件请大家讨论我的程序
-------------------------
unit fConnection;interface
uses ADODB,fDBSet,Dialogs;type
TDBConnection = class(TADOConnection)
procedure connectionBreak(Connection: TADOConnection ; var EventStatus: TEventStatus);
private
public
constructor create(var db_set:TDBSet);
destructor destroy();override;end;implementation constructor TDBConnection.create(var db_set:TDBSet);
var eventStatus:TEventStatus;
begin
inherited create(nil);
self.ConnectionString := 'Provider=SQLOLEDB.1;User ID=''' + db_set.getUserName() + ';Initial Catalog=''' + db_set.getDatabaseName + ';Data Source=''' + db_set.getServerName + '''';
if db_set.getPassword <> 'no' then
self.ConnectionString := self.ConnectionString + 'Password=''' + db_set.getPassword() + '''';
writeln(self.ConnectionString);
self.Open();
self.OnDisconnect := self.connectionBreak(self ,eventStatus);
end; destructor TDBConnection.destroy();
begin
self.Close;
self.Free;
inherited;
end; procedure TDBConnection.connectionBreak(Connection: TADOConnection;
var EventStatus: TEventStatus);
begin
ShowMessage('数据库服务器连接中断!程序退出.');
halt;
end;end.
这里好象不用VAR吧,而且尽量避免少用外部的指针
type
TMyConn = class(TAdoconnection)
public
procedure Disconnect(Connection: TADOConnection;
var EventStatus: TEventStatus);overload;
end;
implementationprocedure TMyConn.Disconnect(Connection: TADOConnection;var EventStatus: TEventStatus);
begin
showmessage('ha ha !')
end;
TMyConn = class(TAdoconnection)
public
procedure Disconnect(Connection: TADOConnection;
var EventStatus: TEventStatus);overload;
end;
implementationprocedure TMyConn.Disconnect(Connection: TADOConnection;var EventStatus: TEventStatus);
begin
inherited;
showmessage('ha ha !')
end;
数据库服务器的设置
包含IP地址
默认数据库名
用户名
密码
你们这样能在连接断开时候自动掉用吗?
我查看帮助手册好象也没有DISCONNECT方法
怎么重载
谢谢各位关注unit fConnection;interface
uses ADODB,fDBSet,Dialogs;type
TDBConnection = class(TADOConnection)
procedure connectionBreak(Connection: TADOConnection ; var EventStatus: TEventStatus);
private
public
constructor create(db_set:TDBSet);
destructor destroy();override;
end;implementation constructor TDBConnection.create(db_set:TDBSet);
//var eventStatus:TEventStatus;
begin
inherited create(self);
self.ConnectionString := 'Provider=SQLOLEDB.1;Initial Catalog=' + db_set.getDatabaseName + ';Data Source=' + db_set.getServerName ;
if db_set.getUserName <> 'no' then
self.ConnectionString := self.ConnectionString + ';User ID=' + db_set.getUserName() ;
if db_set.getPassword <> 'no' then
self.ConnectionString := self.ConnectionString + ';Password=' + db_set.getPassword() ;
self.Open();
self.OnDisconnect := self.connectionBreak;
end; destructor TDBConnection.destroy();
begin
self.Close;
inherited;
end;
procedure TDBConnection.connectionBreak(Connection: TADOConnection;
var EventStatus: TEventStatus);
begin
ShowMessage('数据库服务器连接中断!程序退出.');
halt;
end;end.