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

📄 mysqlcommon.pas

📁 通过Tmysql来访问MSQL Server数据库的应用案例.
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    _OnComplete,
    _OnError,
    OnComplete,
    OnError
  );
end;

function TmySQLClientUtility.GetServerInfo : string;
begin
  Result:=mysql_get_server_info(FTaskHandler.Session);
end;

function TmySQLClientUtility.GetClientInfo : string;
begin
  Result:=mysql_get_client_info;
end;

function TmySQLClientUtility.GetHostInfo : string;
begin
  Result:=mysql_get_host_info(FTaskHandler.Session);
end;

function TmySQLClientUtility.GetProtoInfo : byte;
begin
  Result:=mysql_get_proto_info(FTaskHandler.Session);
end;

function TmySQLClientUtility.GetErrorMsg : string;
begin
  Result:=FTaskHandler.Session.net.last_error;
end;

function TmySQLClientUtility.GetStat : pchar;
begin
  Result:=mysql_stat(FTaskHandler.Session);
end;

function TmySQLClientUtility.GetListResult : TStringList;
begin
  Result:=nil;

  if FCurrentTaskData=nil then exit;

  Result:=FCurrentTaskData.F_ListData;
end;

function TmySQLClientUtility.GetIntegerResult : integer;
begin
  Result:=-1;

  if FCurrentTaskData=nil then exit;

  Result:=FCurrentTaskData.F_IntegerData;
end;

//----------------------------------------------------------------------------
//----------------------------------------------------------------------------

constructor TmySQLClientTaskData.Create;
begin
  F_query       :=StrAlloc(MAX_SQL_LENGTH);

  FTaskType     :=task_mysql_connect;
  FPrepared     :=FALSE;

  F_host  :=StrAlloc(MAX_LENGTH_HOST+1);
  F_user  :=StrAlloc(MAX_LENGTH_USER+1);
  F_passwd:=StrAlloc(MAX_LENGTH_PASSWD+1);
  F_db    :=StrAlloc(MAX_LENGTH_DB+1);

  F_port        :=0;
  F_unix_socket :='';
  F_clientflag  :=0;
  F_presults    :=nil;
  F_Session     :=nil;
  F_ret_code    :=0;
  F_keyfield    :=0;
  F_executetype :=Execute_Stored;
  F_table       :='';
  F_condition   :=StrAlloc(MAX_SQL_LENGTH);

  F_ListData       :=TStringList.Create;
  F_IntegerData    :=-1;

  FThreadOnComplete:=nil;
  FThreadOnError   :=nil;

  FTaskOnComplete  :=nil;
  FTaskOnError     :=nil;
end;

destructor TmySQLClientTaskData.Destroy;
begin
  if F_presults<>nil then begin
    mysql_free_result(F_presults);
  end;

  F_ListData.Free;

  StrDispose(F_host);
  StrDispose(F_user);
  StrDispose(F_passwd);
  StrDispose(F_db);

  StrDispose(F_query);
  StrDispose(F_condition);

  inherited;
end;

constructor TmySQLClientThread.Create(CreateSuspended : boolean);
begin
  inherited;

  FTaskList:=TList.Create;
  FThreaded:=TRUE;
  FOnStatus:=nil;
end;

destructor TmySQLClientThread.Destroy;
begin
  FTaskList.Free;
end;

function TmySQLClientThread.GetTaskCount : integer;
begin
  Result:=FTaskList.Count;
end;

procedure TmySQLClientThread.Prepare_mysql_real_connect(
  const host, user, passwd, db: pchar;
  port: Cardinal; unix_socket: PChar; clientflag: Cardinal;
  const TaskName : string;
  OnComplete : TmySQLClientThread_OnComplete;
  OnError    : TmySQLClientThread_OnError;

  OnTaskComplete : TmySQLClientTask_OnComplete;
  OnTaskError    : TmySQLClientTask_OnError
);
var
  T : TmySQLClientTaskData;
begin
  T:=TmySQLClientTaskData.Create;

  with T do begin
    FName        :=TaskName;

    FPrepared    :=TRUE;
    FTaskType    :=task_mysql_real_connect;

    StrCopy(F_Host  ,host);
    StrCopy(F_User  ,user);
    StrCopy(F_Passwd,passwd);
    StrCopy(F_db    ,db);

    F_port       :=port;
    F_unix_socket:=unix_socket;
    F_clientflag :=clientflag;

    FThreadOnComplete:=OnComplete;
    FThreadOnError   :=OnError;

    FTaskOnComplete:=OnTaskComplete;
    FTaskOnError   :=OnTaskError;
  end;

  FTaskList.Insert(0,T);
end;

procedure TmySQLClientThread.Prepare_mysql_close(
  const TaskName : string;
  OnComplete : TmySQLClientThread_OnComplete;
  OnError    : TmySQLClientThread_OnError;

  OnTaskComplete : TmySQLClientTask_OnComplete;
  OnTaskError    : TmySQLClientTask_OnError
);
var
  T : TmySQLClientTaskData;
begin
  T:=TmySQLClientTaskData.Create;

  with T do begin
    FName        :=TaskName;

    FPrepared    :=TRUE;
    FTaskType    :=task_mysql_close;

    FThreadOnComplete:=OnComplete;
    FThreadOnError   :=OnError;

    FTaskOnComplete:=OnTaskComplete;
    FTaskOnError   :=OnTaskError;
  end;

  FTaskList.Add(T);
end;

procedure TmySQLClientThread.Prepare_mysql_query(
  TaskType : TmySQLClientTaskType;
  _query: pchar;

  const TaskName : string;

  OnComplete : TmySQLClientThread_OnComplete;
  OnError    : TmySQLClientThread_OnError;

  OnTaskComplete : TmySQLClientTask_OnComplete;
  OnTaskError    : TmySQLClientTask_OnError
);
var
  T : TmySQLClientTaskData;
begin
  T:=TmySQLClientTaskData.Create;

  with T do begin
    FName       :=TaskName;

    StrCopy(F_query,_query);

    FPrepared   :=TRUE;
    FTaskType   :=TaskType;

    FThreadOnComplete:=OnComplete;
    FThreadOnError   :=OnError;

    FTaskOnComplete:=OnTaskComplete;
    FTaskOnError   :=OnTaskError;
  end;

  FTaskList.Add(T);
end;

procedure TmySQLClientThread.Prepare_mysql_db(
  TaskType : TmySQLClientTaskType;
  db: pchar;

  const TaskName : string;

  OnComplete : TmySQLClientThread_OnComplete;
  OnError    : TmySQLClientThread_OnError;

  OnTaskComplete : TmySQLClientTask_OnComplete;
  OnTaskError    : TmySQLClientTask_OnError
);
var
  T : TmySQLClientTaskData;
begin
  T:=TmySQLClientTaskData.Create;

  with T do begin
    FName       :=TaskName;

    StrCopy(F_db    ,db);

    FPrepared   :=TRUE;
    FTaskType   :=TaskType;

    FThreadOnComplete:=OnComplete;
    FThreadOnError   :=OnError;

    FTaskOnComplete:=OnTaskComplete;
    FTaskOnError   :=OnTaskError;
  end;

  FTaskList.Add(T);
end;

procedure TmySQLClientThread.Prepare_mysql_list(
  const TaskType : TmySQLClientTaskType;

  Wild : pchar;

  const TaskName : string;

  OnComplete     : TmySQLClientThread_OnComplete;
  OnError        : TmySQLClientThread_OnError;

  OnTaskComplete : TmySQLClientTask_OnComplete;
  OnTaskError    : TmySQLClientTask_OnError
);
var
  T : TmySQLClientTaskData;
begin
  T:=TmySQLClientTaskData.Create;

  with T do begin
    FName       :=TaskName;

    F_Wild      :=Wild;

    FPrepared   :=TRUE;
    FTaskType   :=TaskType;

    FThreadOnComplete:=OnComplete;
    FThreadOnError   :=OnError;

    FTaskOnComplete:=OnTaskComplete;
    FTaskOnError   :=OnTaskError;
  end;

  FTaskList.Add(T);
end;

procedure TmySQLClientThread.Prepare_mysql_list_fields(
  TableName : pchar;
  Wild : pchar;

  const TaskName : string;

  OnComplete     : TmySQLClientThread_OnComplete;
  OnError        : TmySQLClientThread_OnError;

  OnTaskComplete : TmySQLClientTask_OnComplete;
  OnTaskError    : TmySQLClientTask_OnError
);
var
  T : TmySQLClientTaskData;
begin
  T:=TmySQLClientTaskData.Create;

  with T do begin
    FName       :=TaskName;

    F_Table     :=TableName;
    F_Wild      :=Wild;

    FPrepared   :=TRUE;
    FTaskType   :=task_mysql_list_fields;

    FThreadOnComplete:=OnComplete;
    FThreadOnError   :=OnError;

    FTaskOnComplete:=OnTaskComplete;
    FTaskOnError   :=OnTaskError;
  end;

  FTaskList.Add(T);
end;

procedure TmySQLClientThread.Prepare_mysql_list_processes(
  const TaskName : string;

  OnComplete     : TmySQLClientThread_OnComplete;
  OnError        : TmySQLClientThread_OnError;

  OnTaskComplete : TmySQLClientTask_OnComplete;
  OnTaskError    : TmySQLClientTask_OnError
);
var
  T : TmySQLClientTaskData;
begin
  T:=TmySQLClientTaskData.Create;

  with T do begin
    FName       :=TaskName;

    FPrepared   :=TRUE;
    FTaskType   :=task_mysql_list_processes;

    FThreadOnComplete:=OnComplete;
    FThreadOnError   :=OnError;

    FTaskOnComplete:=OnTaskComplete;
    FTaskOnError   :=OnTaskError;
  end;

  FTaskList.Add(T);
end;

procedure TmySQLClientThread.Prepare_mysql_ping_shutdown(
  const TaskType : TmySQLClientTaskType;
  const TaskName : string;

  OnComplete     : TmySQLClientThread_OnComplete;
  OnError        : TmySQLClientThread_OnError;

  OnTaskComplete : TmySQLClientTask_OnComplete;
  OnTaskError    : TmySQLClientTask_OnError
);
var
  T : TmySQLClientTaskData;
begin
  T:=TmySQLClientTaskData.Create;

  with T do begin
    FName       :=TaskName;

    FPrepared   :=TRUE;
    FTaskType   :=TaskType;

    FThreadOnComplete:=OnComplete;
    FThreadOnError   :=OnError;

    FTaskOnComplete:=OnTaskComplete;
    FTaskOnError   :=OnTaskError;
  end;

  FTaskList.Add(T);
end;

procedure TmySQLClientThread.Prepare_mysql_kill(
  const pid : integer;
  const TaskName : string;

  OnComplete     : TmySQLClientThread_OnComplete;
  OnError        : TmySQLClientThread_OnError;

  OnTaskComplete : TmySQLClientTask_OnComplete;
  OnTaskError    : TmySQLClientTask_OnError
);
var
  T : TmySQLClientTaskData;
begin
  T:=TmySQLClientTaskData.Create;

  with T do begin
    FName       :=TaskName;

    F_pid       :=pid;

    FPrepared   :=TRUE;

    FThreadOnComplete:=OnComplete;
    FThreadOnError   :=OnError;

    FTaskOnComplete:=OnTaskComplete;
    FTaskOnError   :=OnTaskError;
  end;

  FTaskList.Add(T);
end;

procedure TmySQLClientThread.Prepare_mysql_options(
  const opt: mysql_option; arg: pchar;
  const TaskName : string;

  OnComplete     : TmySQLClientThread_OnComplete;
  OnError        : TmySQLClientThread_OnError;

  OnTaskComplete : TmySQLClientTask_OnComplete;
  OnTaskError    : TmySQLClientTask_OnError
);
var
  T : TmySQLClientTaskData;
begin
  T:=TmySQLClientTaskData.Create;

  with T do begin
    FName       :=TaskName;

    F_Options   :=Opt;

    FPrepared   :=TRUE;

    FThreadOnComplete:=OnComplete;
    FThreadOnError   :=OnError;

    FTaskOnComplete:=OnTaskComplete;
    FTaskOnError   :=OnTaskError;
  end;

  FTaskList.Add(T);
end;

procedure TmySQLClientThread.Prepare_mysql_refresh(
  const RefreshOptions: cardinal;
  const TaskName : string;

  OnComplete     : TmySQLClientThread_OnComplete;
  OnError        : TmySQLClientThread_OnError;

  OnTaskComplete : TmySQLClientTask_OnComplete;
  OnTaskError    : TmySQLClientTask_OnError
);
var
  T : TmySQLClientTaskData;
begin
  T:=TmySQLClientTaskData.Create;

  with T do begin
    FName       :=TaskName;

    F_Refresh_Options:=RefreshOptions;

    FPrepared   :=TRUE;

    FThreadOnComplete:=OnComplete;
    FThreadOnError   :=OnError;

    FTaskOnComplete:=OnTaskComplete;
    FTaskOnError   :=OnTaskError;
  end;

  FTaskList.Add(T);
end;

procedure TmySQLClientThread.PostComplete(T : TmySQLClientTaskData);
var
  sTemp : string;
  iCount : integer;
begin
  sTemp:=''; iCount:=-1;

  if FThreaded then begin
    if Assigned(T.FThreadOnComplete) or
       Assigned(FOnFinished) or
       Assigned(FOnStatus) then
      PostMessage(FHandlerWndHandle,
        WM_CHAINTASKHANDLER_COMPLETE,
        LongWord(T),
        0
      );
  end else begin
    if Assigned(FOnStatus) then begin
      sTemp:=T.FName;
      iCount:=FTaskList.Cou

⌨️ 快捷键说明

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