由于特殊需要,现有一个var a,b:_Connection;变量 变量a已经和数据库建立连接,现需要克隆一个连接给b,请教高手该如何实现?用b := a;这样不可以,这样当b关闭时,a也关闭了。
解决方案 »
- 救命啊!!!!想用Timer控制循环按制定时间分步执行?
- 请推荐一本delphi网络编程的好书!!谢谢!!
- 我这有个delphi调用webservice(VS.net)的未知错误,我想贴图出来,怎么处理?
- 推荐一本学习Delphi多线程的书!
- 在DBGrid中怎么让指针指向的一条记录背景色变成指定的颜色呢?
- 小问题 希望高手指点
- 如何递归删除数据表的记录?
- 如何能够让用户可以改变DBGRID的列宽度,但不能拖动列而改变列的排列顺序?
- 正在修改XPMenu,碰到一些关于菜单的问题,请各位高手赐教
- 这段C用DELPHI怎么写
- 输出为csv文件打开后'00000'变成'0' ??
- 谁可以共享一份G729语音压缩算法的源码呢?
a和b都是接口指针而已, b := a; 这样的话,他们共用的是一个连接.
你想做到a关闭,而b不关闭,只能这样:function CreateADOObject(const ClassID: TGUID): IUnknown;
var
Status: HResult;
FPUControlWord: Word;
begin
asm
FNSTCW FPUControlWord
end;
Status := CoCreateInstance(ClassID, nil, CLSCTX_INPROC_SERVER or
CLSCTX_LOCAL_SERVER, IUnknown, Result);
asm
FNCLEX
FLDCW FPUControlWord
end;
if (Status = REGDB_E_CLASSNOTREG) then
raise Exception.CreateRes(@SADOCreateError) else
OleCheck(Status);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
a, b: _Connection;
begin b := CreateADOObject(CLASS_Connection) as _Connection;
b.Open(a.ConnectionString, 'yourUserID', 'YourPassword', 0); //第三个参数: 0:同步方式 1: 异步方式end;
ActiveX, ADOConst, ComObj, ADOInt;
需要另创建一下接口,具体实现看一下adoconnection的VCL源码的构造函数,其内有创建过程