⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 实现数据之间的定时数据同步实现数据之间的定时数据同步
💻 PAS
字号:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    ADOConnection2: TADOConnection;
    ADOQuery2: TADOQuery;
    Timer1: TTimer;
    Timer2: TTimer;
    procedure Button1Click(Sender: TObject);
    //procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    function GetInfo : Boolean;
    function ConnectDB1: Boolean;
    function ConnectDB2: Boolean;
  end;
  TThreadDBConnect = class(TThread)
  public
    //线程创建过程,参数CreateSuspended表示创建时线程是否挂起,
    constructor Create(CreateSuspended: Boolean);
    //线程销毁时,发送线程终结命令,取消线程挂起状态,等待线程执行完毕后,销毁
    destructor Destroy; override;
  protected
    //线程执行过程,循环检测数据库连接状态,如果断开,则进行重连,然后自己挂起
    procedure Execute; override;
  private
  end;

  TUpdateThread = class(TThread)
  public
    //线程创建过程,参数CreateSuspended表示创建时线程是否挂起,
    constructor Create(CreateSuspended: Boolean);
    //线程销毁时,发送线程终结命令,取消线程挂起状态,等待线程执行完毕后,销毁
    destructor Destroy; override;
  protected
    //线程执行过程,循环检测数据库连接状态,如果断开,则进行重连,然后自己挂起
    procedure Execute; override;
  end;
var
  Form1: TForm1;
  DBConnectThread: TThreadDBConnect;
  UpdateThread :TUpdateThread;

implementation

{$R *.dfm}

constructor TThreadDBConnect.Create(CreateSuspended: Boolean);
begin
  inherited;
  Priority := tpHigher;
end;

destructor TThreadDBConnect.Destroy;
begin
  Priority := tpHigher;
  Terminate;
  Resume;
  waitfor;
  inherited;
end;

procedure TThreadDBConnect.Execute;                                   //
begin
  inherited;
  while not Terminated do
  begin
    try
      begin
        if Form1.ConnectDB1 and Form1.ConnectDB2  then
        begin
          Priority := tpLower;
        end;
      end;
    except
    end;

    if Terminated then Exit;
    Suspend;
  end;
end;


constructor TUpdateThread.Create(CreateSuspended: Boolean);
begin
  inherited;
  Priority := tpNormal; 
end;

destructor TUpdateThread.Destroy;
begin
  Priority := tpHigher;
  Terminate;
  Resume;
  waitfor;
  inherited;
end;

procedure TUpdateThread.Execute;
begin
  inherited;
  while(not Terminated) do
  begin
    Form1.GetInfo;
    self.Suspend;
    if Terminated then Exit;
    Suspend;
  end;
end;

function TForm1.ConnectDB1 :Boolean;
begin
  Result:=false;
  ADOConnection1.Connected := FALSE;
  try
    ADOConnection1.Connected := TRUE;
    Result:=true;
  except
    Result:=false;
  end;
end;

function TForm1.ConnectDB2:Boolean;
begin
  Result:=false;
  ADOConnection2.Connected := FALSE;
  try
    ADOConnection2.Connected := TRUE;
    Result:=true;
  except
    Result:=false;
  end;
end;

function TForm1.GetInfo : Boolean;
var
  DDL,DDL1:string;
  CRecordSet: _RecordSet;
      //CRecordSet: _RecordSet;
  begin
    DDL := 'select * from info';
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add(DDL);
    ADOQuery1.Open;
    CRecordSet :=ADoquery1.Recordset;


    while not CRecordSet.EOF do
      begin
        DDL1 := 'insert into info1(Id,Name,Address,Sex) values('''
            +trim(ADoquery1.Recordset.Fields[0].value)+''','''
            +trim(ADoquery1.Recordset.Fields[1].value)+''','''
            +trim(ADoquery1.Recordset.Fields[2].value)+''','''
            +trim(ADoquery1.Recordset.Fields[3].value)+''')';
        ADOQuery2.Close;
        ADOQuery2.SQL.Clear;
        ADOQuery2.SQL.Add(DDL1);
        ADOQuery2.ExecSQL;
        CRecordSet.MoveNext;
      end;
  end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  DBConnectThread:= TThreadDBConnect.Create(True);
  UpdateThread:= TUpdateThread.Create(True);

  DBConnectThread.Resume;
  //UpdateThread.Resume;
end;


procedure TForm1.Timer2Timer(Sender: TObject);
begin
    if (FormatDatetime('hhnnss', now) = '2009-5-18 9:37:00') then
    UpdateThread.Resume;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -