procedure TAdmin_Form.Button8Click(Sender: TObject);
var
  ChanOpid:TQuery;
begin
  ChanOpid := TQuery.Create(nil);
  ChanOpid.SessionName := Start_Form.Database1.SessionName;
  ChanOpid.DatabaseName := Start_form.Database1.DatabaseName;
  ChanOpid.SQL.Text := 'update operid set type = '''+Type_Ed.Text+''',name = '''+Name_Ed.Text+''',password = '''+Password_Ed.Text+''',department = '''+Department_Ed.Text+''' where operid = '''+Operid_Ed.Text+'''';
  ChanOpid.ExecSQL;
  QryOperid.Close;
  QryOperid.Open;
end;这是我写的一段修改数据库的代码,我看书上总是写try什么的,我这段代码需不需要啊?应该如何优化啊?有什么好处?

解决方案 »

  1.   

    最好加上,确保将ChanOpid释放procedure TAdmin_Form.Button8Click(Sender: TObject); 
    var 
      ChanOpid:TQuery; 
    begin 
      ChanOpid := TQuery.Create(nil); 
      try
        ChanOpid.SessionName := Start_Form.Database1.SessionName; 
        ChanOpid.DatabaseName := Start_form.Database1.DatabaseName; 
        ChanOpid.SQL.Text := 'update operid set type = '''+Type_Ed.Text+''',name          = '''+Name_Ed.Text+''',password = '''+Password_Ed.Text+''',department = '''+Department_Ed.Text+''' where operid = '''+Operid_Ed.Text+''''; 
        ChanOpid.ExecSQL; 
        QryOperid.Close; 
        QryOperid.Open; 
       finally
         ChanOpid.Free;
       end;

    end; 
      

  2.   

    procedure TAdmin_Form.Button8Click(Sender: TObject); 
    var 
      ChanOpid:TQuery; 
    begin 
      ChanOpid := TQuery.Create(nil); 
      try
        ChanOpid.SessionName := Start_Form.Database1.SessionName; 
        ChanOpid.DatabaseName := Start_form.Database1.DatabaseName; 
        ChanOpid.SQL.Text := 'update operid set type = '''+Type_Ed.Text+''',name          = '''+Name_Ed.Text+''',password = '''+Password_Ed.Text+''',department = '''+Department_Ed.Text+''' where operid = '''+Operid_Ed.Text+''''; 
        ChanOpid.ExecSQL; 
        QryOperid.Close; 
        QryOperid.Open; 
       finally
         ChanOpid.Free;
       end;

    end; 
      

  3.   

    try...finally...end
    好处: 无论try后面的代码成立与否,finally后的代码则一定执行.
      

  4.   

    你的查询结果都没人用,
    如果给QryOperid用的话,
    不能释放的,释放就没了!
    确实需要的话,要把它声明成类私用变量或者公共变量,在适当的时候释放。
    引用楼上的
    try...finally...end 
    好处: 无论try后面的代码成立与否,finally后的代码则一定执行.常用来关闭资源,回收内存等。