亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? mysqlcommon.pas

?? 通過(guò)Tmysql來(lái)訪問(wèn)MSQL Server數(shù)據(jù)庫(kù)的應(yīng)用案例.
?? PAS
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
unit mySQLCommon;

{
  Unit:    TmySQLCommon - Common Data Structures
  Project: TmySQL - http://www.productivity.org/projects/tmysql
  Author:  Justin P. Yunke <yunke@productivity.org>
  Date:    November 1998 - January 2002
  ** Join the TmySQL mailing list at http://www.elists.org **

  Copyrights/Credits:
    Parts Copyright (c) 2001 Justin P. Yunke <yunke@productivity.org>
    Parts Copyright (c) 2001 Ken Kyler
    T.c.X. DataKonsult AB (mySQL software and component bitmap art)
    Bob Silva <bsilva@umesd.k12.or.us> (_libmysql.pas)

  License:
    Open Source.  You must retain copyrights and distribution information
    listed in these files.

  Description:
    This *.pas file contains some internal code structures for the Tmysql
  project, including TmySQLClientThread, TmySQLClientModify, TmySQLClientQuery,
  and TmySQLClientUtility.
}

interface

uses
  Windows, Messages, Classes, StdCtrls, Forms, mysql;

const
  DEFAULT_DLL_LOCATION   = 'libmySQL.DLL';

  DEBUGFILE_COMMON       = 'mysqlcommon.txt';

{For ChainThreadHandler}
  WM_CHAINTASKHANDLER_COMPLETE = WM_USER + 1;
  WM_CHAINTASKHANDLER_ERROR    = WM_USER + 2;

{Last Modification Information}
  TMYSQLCOMMON_VERSION       = '2.1a';
  TMYSQLCOMMON_LAST_MODIFIED = '01.27.2002';
  TMYSQLCOMMON_LAST_AUTHOR   = 'jpy';

  {TmySQLClientModify constants}
  MAX_SQL_LENGTH       = 65536*2;
  MAX_MEMO_LENGTH      = 32768;

  MAX_LENGTH_HOST      = 255;
  MAX_LENGTH_USER      = 16;
  MAX_LENGTH_PASSWD    = 32;
  MAX_LENGTH_DB        = 64;

  MAX_TASK_NAME_LENGTH = 40;

type
  TRefreshOptions = (
    _REFRESH_GRANT,
    _REFRESH_LOG,
    _REFRESH_TABLES,
    _REFRESH_HOSTS,
    _REFRESH_STATUS,
    _REFRESH_THREADS,
    _REFRESH_SLAVE,
    _REFRESH_MASTER
  );
  TSetRefreshOptions = set of TRefreshOptions;

type
  TClientCapabilities = (
    _CLIENT_LONG_PASSWORD,
    _CLIENT_FOUND_ROWS,
    _CLIENT_LONG_FLAG,
    _CLIENT_CONNECT_WITH_DB,
    _CLIENT_NO_SCHEMA,
    _CLIENT_COMPRESS,
    _CLIENT_ODBC,
    _CLIENT_LOCAL_FILES,
    _CLIENT_IGNORE_SPACE,
    _CLIENT_INTERACTIVE,
    _CLIENT_SSL,
    _CLIENT_IGNORE_SIGPIPE,
    _CLIENT_TRANSACTIONS
  );
  TSetClientCapabilities = set of TClientCapabilities;

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

type
  TModifyType = (
    MODIFY_INSERT, MODIFY_UPDATE, MODIFY_REPLACE_INTO, MODIFY_DELETE,
    MODIFY_CREATE_TABLE, MODIFY_DROP_TABLE
  );
  TQuoteOptions = (
    QUOTE_STRIP_CR,QUOTE_STRIP_LF,
    QUOTE_DONT_INSERT_SINGLEQUOTES,
    QUOTE_DONT_USE_NULL
  );
  TQuoteOptionsSet = set of TQuoteOptions;

type
  TmySQLClientTaskType = (
    task_mysql_connect,
    task_mysql_close,
    task_mysql_real_connect,

    task_mysql_select_db,
    task_mysql_create_db,
    task_mysql_drop_db,

    task_mysql_query,
    task_mysql_store_result,

    task_mysql_list_db,
    task_mysql_list_tables,
    task_mysql_list_fields,
    task_mysql_list_processes,

    task_mysql_ping,
    task_mysql_shutdown,
    task_mysql_kill,
    task_mysql_options,
    task_mysql_refresh
  );

  TmySQLClientQuery_ExecuteType = (Execute_Stored,Execute_Dynamic);

  TmySQLClientThread_OnComplete = procedure(Sender : TObject; Data : TObject) of object;
  TmySQLClientThread_OnError = procedure(Sender : TObject; Data : TObject; Msg : string) of object;

  TmySQLClientTask_OnComplete = procedure(Sender : TObject) of object;
  TmySQLClientTask_OnError = procedure(Sender : TObject; Msg : string) of object;

  TmySQLClientTask_Status = array[0..4] of string;
  TmySQLClientTask_StatusType = (
    mySQL_Status_NotConnected,
    mySQL_Status_Connecting,
    mySQL_Status_Idle,
    mySQL_Status_Active,
    mySQL_Status_Reconnecting
  );
const
  mySQLClientTask_Status:TmySQLClientTask_Status = ('Not Connected','Connecting','Idle','Active','Reconnecting');

type
  TmySQLClientTask_OnStatus = procedure(Sender : TObject; Status : TmySQLClientTask_StatusType; TaskName : string; TasksLeft : integer) of object;

  TmySQLClientTaskData = class(TObject)
  public
    FName              : string[MAX_TASK_NAME_LENGTH];

    FTaskType          : TmySQLClientTaskType;
    FPrepared          : boolean;

    F_Wild             : pchar;
    F_ListData         : TStringList;
    F_IntegerData      : integer;

    F_table            : pchar;
    F_modifytype       : TModifyType;
    F_condition        : pchar;

    F_query            : pchar;
    F_host, F_user,
    F_passwd, F_db     : pchar;
    F_port             : Cardinal;
    F_unix_socket      : PChar;
    F_clientflag       : Cardinal;

    F_Session          : pmysql;
    F_presults         : pmysql_res;
    F_ret_code         : integer;
    F_pid              : integer;
    F_options          : mysql_option;
    F_refresh_options  : cardinal;
    F_arg              : pchar;

    F_keyfield         : longword;
    F_executetype      : TmySQLClientQuery_ExecuteType;

    FThreadOnComplete  : TmySQLClientThread_OnComplete;
    FThreadOnError     : TmySQLClientThread_OnError;

    FTaskOnComplete    : TmySQLClientTask_OnComplete;
    FTaskOnError       : TmySQLClientTask_OnError;

    constructor Create;
    destructor  Destroy; override;
  end;

  TmySQLClientThread = class(TThread)
  private
    FHandlerWndHandle : HWND;

    FSession : pmysql;

    FTaskList : TList;

    FThreaded : boolean;

    FOnStatus : TmySQLClientTask_OnStatus;
    FOnFinished : TmySQLClientTask_OnComplete;

    procedure   Run(T : TmySQLClientTaskData);
    procedure   Finish(T : TmySQLClientTaskData);

    procedure   PostComplete(T : TmySQLClientTaskData);
    procedure   PostError(T : TmySQLClientTaskData);

    procedure   ResumeNonThread;

    function    GetTaskCount : integer;
  public
    constructor Create(CreateSuspended : boolean);
    destructor  Destroy; override;

    property    Session : pmysql read FSession write FSession;

    property    TaskCount : integer read GetTaskCount;

    property    OnStatus : TmySQLClientTask_OnStatus read FOnStatus write FOnStatus;
    property    OnFinished : TmySQLClientTask_OnComplete read FOnFinished write FOnFinished;

    procedure   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
    );

    procedure   Prepare_mysql_close(
      const TaskName : string;

      OnComplete     : TmySQLClientThread_OnComplete;
      OnError        : TmySQLClientThread_OnError;

      OnTaskComplete : TmySQLClientTask_OnComplete;
      OnTaskError    : TmySQLClientTask_OnError
    );

    procedure   Prepare_mysql_db(
      tasktype : TmySQLClientTaskType;

      db : pchar;
      const TaskName : string;

      OnComplete     : TmySQLClientThread_OnComplete;
      OnError        : TmySQLClientThread_OnError;

      OnTaskComplete : TmySQLClientTask_OnComplete;
      OnTaskError    : TmySQLClientTask_OnError
    );

    procedure   Prepare_mysql_query(
      tasktype : TmySQLClientTaskType;

      _query : pchar;

      const TaskName : string;

      OnComplete     : TmySQLClientThread_OnComplete;
      OnError        : TmySQLClientThread_OnError;

      OnTaskComplete : TmySQLClientTask_OnComplete;
      OnTaskError    : TmySQLClientTask_OnError
    );

    procedure   Prepare_mysql_list(
      const TaskType : TmySQLClientTaskType;

      Wild : pchar;

      const TaskName : string;

      OnComplete     : TmySQLClientThread_OnComplete;
      OnError        : TmySQLClientThread_OnError;

      OnTaskComplete : TmySQLClientTask_OnComplete;
      OnTaskError    : TmySQLClientTask_OnError
    );

    procedure   Prepare_mysql_list_fields(
      TableName : pchar;
      Wild : pchar;

      const TaskName : string;

      OnComplete     : TmySQLClientThread_OnComplete;
      OnError        : TmySQLClientThread_OnError;

      OnTaskComplete : TmySQLClientTask_OnComplete;
      OnTaskError    : TmySQLClientTask_OnError
    );

    procedure   Prepare_mysql_list_processes(
      const TaskName : string;

      OnComplete     : TmySQLClientThread_OnComplete;
      OnError        : TmySQLClientThread_OnError;

      OnTaskComplete : TmySQLClientTask_OnComplete;
      OnTaskError    : TmySQLClientTask_OnError
    );

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

      OnComplete     : TmySQLClientThread_OnComplete;
      OnError        : TmySQLClientThread_OnError;

      OnTaskComplete : TmySQLClientTask_OnComplete;
      OnTaskError    : TmySQLClientTask_OnError
    );

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

      OnComplete     : TmySQLClientThread_OnComplete;
      OnError        : TmySQLClientThread_OnError;

      OnTaskComplete : TmySQLClientTask_OnComplete;
      OnTaskError    : TmySQLClientTask_OnError
    );

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

      OnComplete     : TmySQLClientThread_OnComplete;
      OnError        : TmySQLClientThread_OnError;

      OnTaskComplete : TmySQLClientTask_OnComplete;
      OnTaskError    : TmySQLClientTask_OnError
    );

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

      OnComplete     : TmySQLClientThread_OnComplete;
      OnError        : TmySQLClientThread_OnError;

      OnTaskComplete : TmySQLClientTask_OnComplete;
      OnTaskError    : TmySQLClientTask_OnError
    );

    procedure   Execute; override;
  end;

  TmySQLClientTaskHandler = class(TObject)
  private
    FWndHandle         : HWND;

    FThreaded          : boolean;
    FThread            : TmySQLClientThread;

    function    GetSession : pmysql;
    procedure   SetSession(Session : pmysql);

    function    GetThreaded : boolean;
    procedure   SetThreaded(B : boolean);
  protected
    procedure   WndProc(var Mesg : TMessage); virtual;
  public
    constructor Create(const BThreaded : boolean); virtual;
    destructor  Destroy; override;

    property    Session : pmysql read GetSession write SetSession;

    property    Threaded : boolean read GetThreaded write SetThreaded;
    property    Thread : TmySQLClientThread read FThread write FThread;

    procedure   StartTasks;

    procedure   DumpTasks;
  end;

type
  TmySQLClientModifyData = class(TObject)
  private
    pData : pchar;
  public
    property Data : pchar read pData write pData;
    destructor Destroy; override;
  end;

  TmySQLClientModify = class(TObject)
  private
    FTaskHandler        : TmySQLClientTaskHandler;

    FData               : TStringList;

    FCurrentTaskData    : TmySQLClientTaskData;

    FDefault_OnComplete : TmySQLClientTask_OnComplete;
    FDefault_OnError    : TmySQLClientTask_OnError;

    procedure   Combine(T : TmySQLClientTaskData);

    procedure   _OnComplete(Sender: TObject; Data: TObject);
    procedure   _OnError(Sender: TObject; Data: TObject; Msg: string);
  protected
  public
    constructor Create;
    destructor  Destroy; override;

    property    TaskHandler : TmySQLClientTaskHandler read FTaskHandler write FTaskHandler;

    property    CurrentTaskData : TmySQLClientTaskData read FCurrentTaskData write FCurrentTaskData;

    property    Default_OnComplete : TmySQLClientTask_OnComplete read FDefault_OnComplete write FDefault_OnComplete;
    property    Default_OnError    : TmySQLClientTask_OnError    read FDefault_OnError    write FDefault_OnError;

    procedure   Add(const Column : string; Data : pchar);
    procedure   AddString(const Column : string; const Data : string);
    procedure   AddInteger(const Column : string; const Data : integer);
    procedure   AddMemo(const Column : string; Memo : TMemo);

    procedure   PrepareCreateTable(Table : pchar; const TaskName : string);
    procedure   PrepareCreateTableTask(
      Table : pchar;
      const TaskName : string;
      OnComplete : TmySQLClientTask_OnComplete;
      OnError    : TmySQLClientTask_OnError
    );

    procedure   PrepareDropTable(Table : pchar; const TaskName : string);
    procedure   PrepareDropTableTask(
      Table : pchar;
      const TaskName : string;
      OnComplete : TmySQLClientTask_OnComplete;
      OnError    : TmySQLClientTask_OnError
    );

    procedure   PrepareInsert(Table : pchar; const TaskName : string);
    procedure   PrepareInsertTask(
      Table : pchar;
      const TaskName : string;
      OnComplete : TmySQLClientTask_OnComplete;
      OnError    : TmySQLClientTask_OnError
    );

    procedure   PrepareUpdate(Table : pchar; Condition : pchar; const TaskName : string);
    procedure   PrepareUpdateTask(
      Table, Condition : pchar;
      const TaskName : string;
      OnComplete : TmySQLClientTask_OnComplete;
      OnError    : TmySQLClientTask_OnError
    );

    procedure   PrepareUpdateString(Table : pchar; const Condition : string; const TaskName : string);
    procedure   PrepareUpdateStringTask(
      Table : pchar; const Condition : string;
      const TaskName : string;
      OnComplete : TmySQLClientTask_OnComplete;
      OnError    : TmySQLClientTask_OnError
    );

    procedure   PrepareReplaceInto(Table : pchar; Condition : pchar; const TaskName : string);
    procedure   PrepareReplaceIntoTask(
      Table, Condition : pchar;
      const TaskName : string;
      OnComplete : TmySQLClientTask_OnComplete;
      OnError    : TmySQLClientTask_OnError
    );

    procedure   PrepareReplaceIntoString(Table : pchar; const Condition : string; const TaskName : string);
    procedure   PrepareReplaceIntoStringTask(
      Table : pchar; const Condition : string;
      const TaskName : string;
      OnComplete : TmySQLClientTask_OnComplete;
      OnError    : TmySQLClientTask_OnError
    );

    procedure   PrepareDelete(Table, Condition : pchar; const TaskName : string);
    procedure   PrepareDeleteTask(
      Table, Condition : pchar;
      const TaskName : string;
      OnComplete : TmySQLClientTask_OnComplete;
      OnError    : TmySQLClientTask_OnError
    );

    procedure   PrepareDeleteString(Table : pchar; const Condition : string; const TaskName : string);
    procedure   PrepareDeleteStringTask(
      Table : pchar; const Condition : string;
      const TaskName : string;
      OnComplete : TmySQLClientTask_OnComplete;
      OnError    : TmySQLClientTask_OnError
    );

    procedure   Reset;
  end;

type
  TmySQLClientQuery = class(TObject)
  private
    FTaskHandler : TmySQLClientTaskHandler;

    FData         : TStringList;
    FFields       : TStringList;
    FFieldsLoaded : boolean;

    FCurrentTaskData : TmySQLClientTaskData;

    FDefault_OnComplete : TmySQLClientTask_OnComplete;
    FDefault_OnError    : TmySQLClientTask_OnError;

    procedure   GetFields;
    function    GetFieldCount : integer;
    function    GetField(const i : longint) : pmysql_field;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品福利视频| 国产精品久久久久婷婷二区次| caoporm超碰国产精品| 国产精品乡下勾搭老头1| 久久99精品一区二区三区三区| 日韩av网站免费在线| 成人综合婷婷国产精品久久 | 亚洲一区二区三区中文字幕在线| 国产精品久久久久天堂| 国产女人18毛片水真多成人如厕| 久久精品视频免费| 国产日韩欧美精品在线| 中文天堂在线一区| 综合久久一区二区三区| 亚洲另类在线视频| 亚洲bt欧美bt精品| 麻豆高清免费国产一区| 蜜桃视频一区二区三区| 精品一区二区三区的国产在线播放 | 亚洲成人动漫精品| 五月天网站亚洲| 蜜桃视频在线观看一区二区| 国产一区不卡在线| 国产不卡视频在线观看| 99久久婷婷国产精品综合| 在线国产电影不卡| 日韩午夜激情免费电影| 久久婷婷综合激情| 国产精品不卡视频| 一区二区三区四区中文字幕| 午夜视黄欧洲亚洲| 激情综合色综合久久综合| 国产成人在线视频网址| 91麻豆精品秘密| 欧美日韩一区二区三区免费看 | 91麻豆精品国产自产在线 | 国产欧美精品日韩区二区麻豆天美| 中文字幕精品一区二区三区精品| 亚洲免费观看高清完整版在线| 午夜一区二区三区视频| 国产呦萝稀缺另类资源| 色综合久久中文字幕| 日韩亚洲欧美综合| 欧美激情一区二区三区在线| 亚洲国产一区视频| 国产一区二区三区电影在线观看| k8久久久一区二区三区 | 精品国产乱码久久久久久久| 国产精品视频线看| 偷拍与自拍一区| 国产风韵犹存在线视精品| 欧美三级在线播放| 久久久99久久| 亚洲成av人片在www色猫咪| 国产精品一区专区| 色婷婷国产精品综合在线观看| 日韩一级在线观看| 亚洲精品国产第一综合99久久| 激情综合色丁香一区二区| 91激情在线视频| 久久女同性恋中文字幕| 夜夜亚洲天天久久| 国产乱码精品一区二区三区忘忧草| 在线观看国产精品网站| 亚洲精品一区二区三区四区高清| 亚洲免费观看高清完整版在线 | 亚洲欧美乱综合| 国产精品亚洲午夜一区二区三区 | av不卡免费在线观看| 欧美不卡一区二区| 亚洲va欧美va天堂v国产综合| 不卡欧美aaaaa| 久久久无码精品亚洲日韩按摩| 亚洲成av人片在线观看| 99国产麻豆精品| 久久精品亚洲精品国产欧美| 日韩av一级电影| 在线视频亚洲一区| 日韩美女啊v在线免费观看| 国产综合久久久久影院| 制服.丝袜.亚洲.另类.中文| 一区二区三区在线观看国产| 成a人片亚洲日本久久| 久久久久久电影| 美美哒免费高清在线观看视频一区二区 | 在线国产亚洲欧美| 亚洲少妇屁股交4| 成人午夜av影视| 久久久欧美精品sm网站| 黄色日韩网站视频| 欧美电影免费观看完整版| 日本不卡在线视频| 欧美日韩国产欧美日美国产精品| 亚洲精品国产视频| 日本道免费精品一区二区三区| 亚洲欧洲99久久| 成人av网站在线| 欧美国产日本视频| 国产大陆亚洲精品国产| 国产性做久久久久久| 国产精品99久久久久久似苏梦涵| 日韩亚洲欧美高清| 日本特黄久久久高潮| 欧美一区二视频| 蜜臀91精品一区二区三区 | 国产精品天天看| 处破女av一区二区| 国产精品理论片| 99久久综合色| 一区二区三区四区五区视频在线观看| 91丨九色丨蝌蚪富婆spa| 最好看的中文字幕久久| 色综合天天做天天爱| 亚洲一区二区三区免费视频| 欧美日韩一区在线| 人人超碰91尤物精品国产| 日韩精品中文字幕在线不卡尤物| 老汉av免费一区二区三区| 久久综合久久综合九色| 国产成人8x视频一区二区| 国产精品久久久久7777按摩| 色又黄又爽网站www久久| 亚洲国产一区二区在线播放| 91麻豆精品国产自产在线| 国内精品伊人久久久久av影院| 久久蜜桃一区二区| 波多野结衣视频一区| 亚洲综合视频网| 日韩西西人体444www| 国产乱妇无码大片在线观看| 国产精品国产三级国产普通话99 | 久久99最新地址| 久久蜜臀精品av| 中文av字幕一区| 在线视频一区二区三| 蜜桃视频在线一区| 国产精品国产馆在线真实露脸 | 国产精品看片你懂得 | 亚洲精品日韩专区silk| 欧美久久一区二区| 国模冰冰炮一区二区| 亚洲欧洲精品成人久久奇米网| 欧美日韩国产天堂| 国产福利一区二区三区在线视频| 亚洲精品一二三四区| 日韩一区二区在线观看视频| 成人性生交大片免费看在线播放| 亚洲美女一区二区三区| 欧美一区二区黄| 成人精品国产福利| 日韩专区在线视频| 国产三级欧美三级日产三级99 | 亚洲男人的天堂一区二区| 日韩一区二区视频| 99久久国产综合精品女不卡| 视频在线观看一区| 国产精品乱码一区二三区小蝌蚪| 欧美三片在线视频观看| 国产一区二区三区美女| 亚洲午夜电影在线| 欧美激情在线看| 欧美一区二区黄色| 色94色欧美sute亚洲线路二| 国产在线视视频有精品| 亚洲一区二区三区激情| 国产精品人人做人人爽人人添| 在线成人av网站| 91色porny在线视频| 国产在线不卡一卡二卡三卡四卡| 夜夜爽夜夜爽精品视频| 亚洲国产精品传媒在线观看| 日韩欧美国产综合| 欧洲精品一区二区| 成人精品免费网站| 精品在线播放免费| 丝袜美腿成人在线| 亚洲一二三四久久| 亚洲三级理论片| 国产偷国产偷亚洲高清人白洁| 欧美男人的天堂一二区| 色综合久久精品| 成年人网站91| 粉嫩蜜臀av国产精品网站| 国模一区二区三区白浆| 日韩经典中文字幕一区| 亚洲午夜一区二区三区| 亚洲欧美日本在线| 中文字幕中文字幕一区二区| 2017欧美狠狠色| 日韩欧美国产一区在线观看| 欧美日韩美少妇| 色狠狠色狠狠综合| 97se亚洲国产综合自在线不卡| 国产成人精品亚洲777人妖| 另类调教123区| 麻豆国产欧美日韩综合精品二区 | 日本精品一级二级| 91亚洲午夜精品久久久久久| 波多野结衣视频一区| 成人开心网精品视频|