用Adoconnection定义了一个数据库连接DBConn,配制好后打开Open.执行Execute。获取数据后关闭连接close, connected=false。待需要时再打开Open,执行Execute.
但发现关闭连接后,不Open,仍然可以Execute。请高手指点一条真正断开连接,然后可以再连数据库的方法!谢谢谢谢!

解决方案 »

  1.   

    给你一个真正断开的例子:var
      Obj: IBusOrder;
      MConnection: TADOConnection;
      MQuery: TADOQuery;
    begin
      Result := False;
      Visited.QueryInterface(IBusOrder, Obj);
      if Obj <> nil then
      begin
        CoInitialize(nil);
        MConnection := TADOConnection.Create(nil);
        MConnection.ConnectionString := DBConnection;
        MConnection.LoginPrompt := False;
        MConnection.Open;
        MQuery := TADOQuery.Create(nil);
        with MQuery do
        begin
          try
            Connection := MConnection;
            MConnection.BeginTrans;
            try
              SQL.Text := ' Insert Into TPTMIS_BusOrderInfo(FBusOrderID, '+
                          '                                 FBusOrderName, '+
                          '                                 FLineID, '+
                          '                                 FLineName, '+
                          '                                 FLeaveTime, '+
                          '                                 FSeatingPreset, '+
                          '                                 FChildrenPreset, '+
                          '                                 FIntervalDays, '+
                          '                                 FOriginalDate ) '+
                          '                          Values(:FBusOrderID, '+
                          '                                 :FBusOrderName, '+
                          '                                 :FLineID, '+
                          '                                 :FLineName, '+
                          '                                 :FLeaveTime, '+
                          '                                 :FSeatingPreset, '+
                          '                                 :FChildrenPreset, '+
                          '                                 :FIntervalDays, '+
                          '                                 :FOriginalDate ) ';
              Parameters.ParamByName('FBusOrderID').Value := Obj.BusOrderID;
              Parameters.ParamByName('FBusOrderName').Value := Obj.BusOrderName;
              Parameters.ParamByName('FLineID').Value := Obj.LineID;
              Parameters.ParamByName('FLineName').Value := Obj.LineName;
              Parameters.ParamByName('FLeaveTime').Value := FormatDateTime('HH:MMMM', Obj.LeaveTime);
              Parameters.ParamByName('FSeatingPreset').Value := Obj.SeatingPreSet;
              Parameters.ParamByName('FChildrenPreset').Value := Obj.ChildrenPreSet;
              Parameters.ParamByName('FIntervalDays').Value := Obj.IntervalDays;
              Parameters.ParamByName('FOriginalDate').Value := Obj.OriginalDate;
              ExecSQL;
              MConnection.CommitTrans;
              Result := True;
            except
              MConnection.RollbackTrans;
              Result := False;
            end;
          finally
            MQuery.Free;
            MConnection.Free;
          end;
        end;
      end;
    end;(我的工程应用代码)