程序很简单 关键是做一个测试
一个form 一个adoconnection (adoconnection1)一个adotable(adotable1) 一个datasouce
一个datagrid d7+sql2000
一开始adoconnection连数据库cre_peo_ma 设置其connect属性为true
adotable 的connection属性设置 为 adoconnection1       active设置为true
好 数据库就连上了 并且正常显示然后 出于某种原因(为了数据还原等等 这里先不考虑) 我要把adoconnection1 用free语句释放掉了
比如设一个button1 然后单击button1 ADOConnection1.free;
我现想问 把ADOConnection1给free了 是不是他就不存在了 就不能再调用了
如果我还想再调用ADOConnection1 是不是只能新建一个ADOConnection1
能不能我预先建立一个ADOConnection1的备份 然后再把他还原
比如说 
var ADOConnection1 ADOConrestore
  ADOConrestore:= ADOConnection1;
  ADOConnection1.free;
  ADOConrestore:= ADOConnection1;
这样行不行 如果不行 怎样新建一个 ADOConnection1;
并让他具备他释放之前一切的属性
以上是第一个问题
我第二个问题是 
程序一开始时 我设置adotable 的connection属性设置 为 adoconnection1       active属性设置为true 
当ADOConnection1.free后 
adotable 的connection属性设置是什么 
还是adoconnection1 么 或者是干脆什么都没有
是否也就是意味当重建ADOConnection1后 adotable 的connection属性设置要重新设置?
望众位大虾不吝赐教!! 

解决方案 »

  1.   

    你可以在Free之前建立另外一个TADOConnection对象,在需要使用的时候再重新建立ADOConnection1var
      TempConn:TADOConnection;
    begin
    TempConn:=TADOConnection.Create(Self);
    TempConn.Assign(ADOConnection1);
    TempConn.Connected:=False;
    ADOConnection.Free;
    end;
    大量电脑书籍下载:
    http://www.netyi.net/in.asp?id=ForMoreU
      

  2.   

    请问TempConn.Assign(ADOConnection1);是什么意思
      

  3.   

    相当于Clone吧,把ADOConnection1所有的属性都写到TempConn中的对应属性中去.
      

  4.   

    谁能告诉我第二个问题 把
    adotable 的connection属性 在delphi 里 动态连到ADOConnection1;
     语句是什么 谢谢
      

  5.   

    说实在的,adoconnection都free了,程序也该退出了...^-^
      

  6.   

    谁能告诉我第二个问题 把
    adotable 的connection属性 在delphi 里 动态连到ADOConnection1;
     语句是什么 谢谢
      

  7.   

    用assign就可以实现你的要求了,它的作用等同与赋值,但不等于:=。
    后者只是增加一个引用指针,如ADOCON1:=ADOCON2,ADOCON2改变的话,ADOCON1也会变化
      

  8.   

    第2个问题ado系列组件有个connectionstring属性为一 widestring字符串
    你保存它就可以了,里面是数据连接配置
      

  9.   

    为什么一定要FREE呢.
    难道 AdoConnection.Connected := false; 不行码?
      

  10.   

    同意arraden(小兵传奇) ( ) 信誉:100 
    的观点,没有必要FREE的
      

  11.   

    1.将AdoConnection free前,用WriteComponentResFile将其序列化procedure TForm1.Button1Click(Sender: TObject);
    var
      ADOCon: TADOConnection;
    begin
      ADOCon := TADOConnection.Create(nil);
      try
        ADOCon.LoginPrompt := false;
        ADOCon.ConnectionString := '1235568';
        WriteComponentResFile('c:\test', ADOCon);
      finally
        ADOCon.Free;
      end;
    end;2。需还原AdoConnection时, 用ReadComponentResFile读回原控间的状态
    procedure TForm1.Button2Click(Sender: TObject);
    var
      ADOConB: TADOConnection;
    begin
      ADOConB := ReadComponentResFile('c:\test', nil) as TADOConnection;
      ShowMessage('ConnectionString: ' + ADOConB.ConnectionString);
    end;3。注意: 需注册TADOConnection类initialization
      RegisterClasses([TADOConnection]);
    end.