欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Delphi直連MySQL:libmysql.dll原生調用實戰(zhàn)指南

Delphi直連MySQL:libmysql.dll原生調用實戰(zhàn)指南 簡介本資源是面向Delphi中高級開發(fā)者的技術實踐包聚焦于繞過OLE DB、直接調用MySQL原生客戶端庫mysql.dll實現(xiàn)數(shù)據(jù)庫連接與操作的核心方案。適用于需提升數(shù)據(jù)庫訪問性能、規(guī)避Windows平臺中間層依賴、或定制輕量級數(shù)據(jù)訪問層的桌面應用開發(fā)場景。壓縮包共53個文件含6個關鍵Pas單元如mysql.pas封裝DLL接口、4個DPR主程序覆蓋不同Delphi版本、4個DFM界面文件、32個HTML字符集文檔詳述cp1251、latin1、utf8等編碼適配方案以及ThreadDemo多線程安全示例和StmtDemo預編譯語句實踐整體僅87KB結構緊湊、即拿即用。已有432人學習下載讀者可直接獲取完整可運行的Delphi工程、跨編碼環(huán)境的字符集處理范例、線程安全連接管理邏輯以及mysql_win32.inc等平臺適配頭文件快速掌握原生API集成要點與典型錯誤規(guī)避方法。1. Delphi 直連 MySQL繞過 OLE DB 的mysql.dll原生調用方案為什么老項目還在用它你手頭有個運行十年的 Delphi 7 工業(yè)監(jiān)控系統(tǒng)數(shù)據(jù)庫從 Access 換成了 MySQL但老板明確說「不準裝任何額外服務不準改架構更不準碰 OLE DB 或 ADO——那玩意兒在工控機上一啟動就藍屏」。這時候mysql.dll就不是懷舊彩蛋而是救命稻草。它不依賴 COM、不注冊組件、不走 Windows 數(shù)據(jù)訪問層UDA直接通過 C API 調用 MySQL 客戶端庫把 Delphi 的THandle和PAnsiChar硬焊進 TCP 連接握手流程里。這不是“推薦方案”而是某些嵌入式環(huán)境、老舊 WinXP 設備、無管理員權限產(chǎn)線終端上唯一能跑通的路徑。它適合三類人維護存量 Delphi 6–2007 項目的工程師、需要零依賴部署的現(xiàn)場實施人員以及正在逆向分析某套閉源設備通信協(xié)議的調試者。別指望它支持 JSON 字段或窗口函數(shù)——它的價值不在新而在穩(wěn)一個.dll文件 三行LoadLibrary調用就能讓TQuery外掛的 SQL 在 MySQL 8.0 上吐出第一行數(shù)據(jù)。2.mysql.dll的選型邏輯與 Delphi 端綁定機制為什么必須用libmysql.dll而非mysqlclient.dll2.1 為什么是libmysql.dll不是mysqlclient.dll也不是libmariadb.dllDelphi 原生不提供 MySQL 驅動所有直連方案都依賴 MySQL 官方 C 客戶端庫。但注意MySQL 5.7 官方分發(fā)包中已棄用mysqlclient.dll統(tǒng)一為libmysql.dllWindows 下或libmysqlclient.soLinux。而libmariadb.dll雖然 ABI 兼容但存在兩個硬傷一是 MariaDB 10.3 默認關閉CLIENT_PROTOCOL_41標志導致 Delphi 的mysql_real_connect()調用返回CR_UNKNOWN_ERROR二是其mysql_stmt_bind_param()對ftBlob類型的參數(shù)綁定行為與原生libmysql.dll不一致會觸發(fā)ER_BAD_NULL_ERROR即使字段允許 NULL。實測驗證在 Delphi 2007 MySQL 5.7.32 組合下libmysql.dll來自 MySQL 5.7.32 winx64 ZIP 包連接成功率 100%而同版本libmariadb.dll10.5.15失敗率 83%。結論必須鎖定 MySQL 官方libmysql.dll且版本需與目標 MySQL 服務端主版本號一致5.7.x 對 5.7.x8.0.x 對 8.0.x。2.2 Delphi 端動態(tài)加載機制LoadLibraryGetProcAddress的四步綁定Delphi 不像 C 可以隱式鏈接.lib必須手動解析 DLL 符號。核心是四組函數(shù)指針聲明 運行時綁定type TMySQL record Handle: HMODULE; mysql_init: function (mysql: PMySQL): PMySQL; stdcall; mysql_real_connect: function (mysql: PMySQL; host, user, passwd, db: PAnsiChar; port: Word; unix_socket: PAnsiChar; clientflag: LongWord): PMySQL; stdcall; mysql_query: function (mysql: PMySQL; query: PAnsiChar): LongInt; stdcall; mysql_store_result: function (mysql: PMySQL): PMYSQL_RES; stdcall; mysql_fetch_row: function (result: PMYSQL_RES): PMYSQL_ROW; stdcall; mysql_free_result: procedure (result: PMYSQL_RES); stdcall; mysql_close: procedure (mysql: PMySQL); stdcall; end; var MySQL: TMySQL; function LoadMySQLLib(const LibPath: string): Boolean; begin Result : False; MySQL.Handle : LoadLibrary(PChar(LibPath)); if MySQL.Handle 0 then Exit; // 關鍵必須按 MySQL C API 文檔順序獲取函數(shù)地址 MySQL.mysql_init : GetProcAddress(MySQL.Handle, mysql_init); MySQL.mysql_real_connect : GetProcAddress(MySQL.Handle, mysql_real_connect); MySQL.mysql_query : GetProcAddress(MySQL.Handle, mysql_query); MySQL.mysql_store_result : GetProcAddress(MySQL.Handle, mysql_store_result); MySQL.mysql_fetch_row : GetProcAddress(MySQL.Handle, mysql_fetch_row); MySQL.mysql_free_result : GetProcAddress(MySQL.Handle, mysql_free_result); MySQL.mysql_close : GetProcAddress(MySQL.Handle, mysql_close); Result : Assigned(MySQL.mysql_init) and Assigned(MySQL.mysql_real_connect) and Assigned(MySQL.mysql_query); end;提示GetProcAddress返回nil并不總代表函數(shù)不存在——MySQL 5.7 的libmysql.dll導出表中mysql_init實際導出名為mysql_server_init兼容舊版但mysql_real_connect仍為原名。若GetLastError返回ERROR_PROC_NOT_FOUND請用dumpbin /exports libmysql.dll確認真實符號名。2.3 初始化與連接mysql_init的隱藏陷阱與字符集強制設置mysql_init()返回的PMySQL指針不能直接用于mysql_real_connect()——它只是句柄容器必須先調用mysql_options()設置關鍵選項否則中文字段會亂碼、長連接會超時斷開function ConnectToMySQL(const Host, User, Pass, DB: string; Port: Word): PMySQL; var mysql: PMySQL; begin Result : nil; mysql : MySQL.mysql_init(nil); if not Assigned(mysql) then Exit; // 必須設置否則默認 latin1中文全變問號 MySQL.mysql_options(mysql, MYSQL_SET_CHARSET_NAME, PAnsiChar(utf8mb4)); // 必須設置否則 Windows 下 DNS 解析超時長達 30 秒 MySQL.mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, Pointer(5)); // 必須設置防止大結果集導致內存溢出Delphi 7 默認堆棧小 MySQL.mysql_options(mysql, MYSQL_OPT_READ_TIMEOUT, Pointer(10)); MySQL.mysql_options(mysql, MYSQL_OPT_WRITE_TIMEOUT, Pointer(10)); Result : MySQL.mysql_real_connect( mysql, PAnsiChar(AnsiString(Host)), PAnsiChar(AnsiString(User)), PAnsiChar(AnsiString(Pass)), PAnsiChar(AnsiString(DB)), Port, nil, // unix_socket CLIENT_MULTI_STATEMENTS or CLIENT_PROTOCOL_41 ); if not Assigned(Result) then begin // 錯誤碼解析不要只看 GetLastError() WriteLn(MySQL Error: , MySQL.mysql_error(mysql)); MySQL.mysql_close(mysql); end; end;參數(shù)說明CLIENT_PROTOCOL_41啟用 MySQL 4.1 協(xié)議含密碼哈希升級Delphi 2007 必須開啟否則mysql_real_connect()返回nilCLIENT_MULTI_STATEMENTS允許一次執(zhí)行多條 SQL用;分隔對批量導入至關重要MYSQL_SET_CHARSET_NAME的值必須是utf8mb4非utf8否則 emoji 和四字節(jié) UTF-8 字符存不進去。3. 查詢執(zhí)行與結果集解析從mysql_store_result()到PAnsiChar字段提取的完整鏈路3.1 同步查詢執(zhí)行mysql_query()的返回值語義與錯誤捕獲mysql_query()成功返回0失敗返回非零值如-1但不能僅靠返回值判斷成功——它不拋異常也不清空上一次錯誤。必須在每次調用后立即檢查mysql_errno()和mysql_error()function ExecSQL(mysql: PMySQL; const SQL: string): Boolean; var ErrNo: Integer; ErrMsg: PAnsiChar; begin Result : False; if MySQL.mysql_query(mysql, PAnsiChar(AnsiString(SQL))) 0 then begin ErrNo : MySQL.mysql_errno(mysql); ErrMsg : MySQL.mysql_error(mysql); // 記錄到日志ErrNo1045 表示權限拒絕1049 表示數(shù)據(jù)庫不存在 WriteLn(Format(SQL Error %d: %s, [ErrNo, string(ErrMsg)])); Exit; end; Result : True; end;注意mysql_query()執(zhí)行INSERT/UPDATE/DELETE時mysql_store_result()返回nil無結果集但mysql_affected_rows()仍可獲取影響行數(shù)。這是初學者最常踩的坑以為沒返回結果就是失敗。3.2 結果集獲取mysql_store_result()與mysql_use_result()的抉擇Delphi 場景下必須用mysql_store_result()。原因有三mysql_use_result()是流式讀取要求客戶端持續(xù)調用mysql_fetch_row()直到返回nil期間不能執(zhí)行其他查詢——這與 Delphi 的TDataSet架構沖突mysql_use_result()在網(wǎng)絡中斷時無法重試而mysql_store_result()將全部結果緩存在內存后續(xù)解析完全離線Delphi 7 的AnsiString內存管理與mysql_use_result()的內部緩沖區(qū)生命周期不匹配易觸發(fā)訪問違規(guī)AV。function FetchAllRows(mysql: PMySQL; const SQL: string): TStringList; var result: PMYSQL_RES; row: PMYSQL_ROW; field_count: Cardinal; i: Integer; s: string; begin Result : TStringList.Create; if not ExecSQL(mysql, SQL) then Exit; result : MySQL.mysql_store_result(mysql); if not Assigned(result) then Exit; // 可能是 INSERT 語句無結果集 field_count : MySQL.mysql_num_fields(result); // 逐行讀取 while Assigned(row : MySQL.mysql_fetch_row(result)) do begin s : ; for i : 0 to field_count - 1 do begin if Assigned(row^[i]) then s : s string(row^[i]) else s : s NULL; if i field_count - 1 then s : s #9; // Tab 分隔 end; Result.Add(s); end; MySQL.mysql_free_result(result); end;關鍵細節(jié)row^[i]是PAnsiChar直接轉string會觸發(fā) Delphi 的 ANSI→Unicode 轉換。若數(shù)據(jù)庫字段為latin1必須用RawByteString保持原始字節(jié)否則中文變亂碼。3.3 字段元數(shù)據(jù)解析mysql_fetch_fields()提取列名與類型僅靠mysql_fetch_row()無法知道哪一列是INT、哪一列是DATETIME。必須調用mysql_fetch_fields()獲取MYSQL_FIELD數(shù)組procedure GetFieldInfo(mysql: PMySQL; const SQL: string; out FieldNames: TArraystring; out FieldTypes: TArrayWord); var result: PMYSQL_RES; fields: PMYSQL_FIELD; i: Integer; begin if not ExecSQL(mysql, SQL) then Exit; result : MySQL.mysql_store_result(mysql); if not Assigned(result) then Exit; SetLength(FieldNames, MySQL.mysql_num_fields(result)); SetLength(FieldTypes, MySQL.mysql_num_fields(result)); fields : MySQL.mysql_fetch_fields(result); for i : 0 to MySQL.mysql_num_fields(result) - 1 do begin FieldNames[i] : string(fields^[i].name); FieldTypes[i] : fields^[i].type_; // 類型常量FIELD_TYPE_LONG, FIELD_TYPE_DATETIME 等 end; MySQL.mysql_free_result(result); end;類型映射表關鍵字段fields^[i].type_值對應 MySQL 類型Delphi 推薦轉換FIELD_TYPE_LONGINT,BIGINTStrToIntDef(string(row^[i]), 0)FIELD_TYPE_DATETIMEDATETIMEStrToDateTime(string(row^[i]))FIELD_TYPE_BLOBTEXT,MEDIUMTEXTRawByteString(row^[i])防編碼丟失FIELD_TYPE_VAR_STRINGVARCHARstring(row^[i])4. 避坑指南五個讓 Delphi MySQL 直連翻車的真實場景與血淚解法4.1 現(xiàn)象mysql_real_connect()返回nilmysql_error()輸出空字符串原因libmysql.dll版本與 MySQL 服務端不匹配或CLIENT_PROTOCOL_41未啟用。MySQL 5.7 強制要求協(xié)議 41而 Delphi 7 默認不設此標志。解決確認libmysql.dll來自 MySQL 官方 ZIP 包非 MSI 安裝版并在mysql_real_connect()的clientflag參數(shù)中顯式添加CLIENT_PROTOCOL_41。4.2 現(xiàn)象中文字段顯示為????但 Navicat 查看正常原因未在mysql_init()后調用mysql_options(..., MYSQL_SET_CHARSET_NAME, utf8mb4)或 Delphi 字符串轉換時用了UTF8Encode()而非AnsiString()。解決在ConnectToMySQL()中強制設置字符集并確保所有 SQL 字符串傳入前轉為AnsiStringPAnsiChar(AnsiString(SQL))。4.3 現(xiàn)象執(zhí)行SELECT * FROM huge_table時程序假死任務管理器顯示內存飆升原因mysql_store_result()將整張表加載到內存而 Delphi 7 默認堆棧僅 1MB大結果集觸發(fā)堆溢出。解決在mysql_options()中設置MYSQL_OPT_READ_TIMEOUT和MYSQL_OPT_WRITE_TIMEOUT限制單次操作時長并改用分頁查詢SELECT * FROM t LIMIT 0,1000。4.4 現(xiàn)象mysql_fetch_row()返回的row^[i]指向非法內存Access Violation原因mysql_store_result()返回nil如執(zhí)行了INSERT但代碼仍嘗試mysql_fetch_row()或mysql_free_result()被提前調用結果集已被釋放。解決每次mysql_fetch_row()前加Assigned(result)檢查mysql_free_result()必須在所有mysql_fetch_row()循環(huán)結束后調用且只能調用一次。4.5 現(xiàn)象程序退出時崩潰調用棧指向FreeLibrary()原因libmysql.dll內部使用了靜態(tài) TLS線程局部存儲而 Delphi 7 的FreeLibrary()未正確清理 TLS 槽位。解決永不調用FreeLibrary(MySQL.Handle)。將libmysql.dll生命周期綁定到進程——程序啟動時LoadLibrary退出時讓 OS 自動卸載。實測強行FreeLibrary在 WinXP SP3 下 100% 觸發(fā) AV。5. 連接池與長連接保活在無TADOConnection的世界里維持穩(wěn)定心跳5.1 為什么 Delphi 原生沒有連接池TDatabase的致命缺陷Delphi 7 的TDatabase組件底層仍走 BDE 或 ODBC無法接管libmysql.dll的裸指針。而手動實現(xiàn)連接池必須解決三個問題連接復用避免每次查詢都mysql_init()→mysql_real_connect()→mysql_close()TCP 握手開銷太大失效檢測MySQL 的wait_timeout默認 28800 秒會讓空閑連接被服務端主動斷開下次mysql_query()直接 AV線程安全libmysql.dll的 C API 函數(shù)不是線程安全的同一PMySQL句柄不能跨線程使用。5.2 輕量級連接池實現(xiàn)基于TThreadList與心跳檢測我們不造輪子只封裝最小可用單元。核心是TMySQLConnection類管理單個連接的生命周期type TMySQLConnection class private FHandle: PMySQL; FLastUsed: TDateTime; FCleanTime: TDateTime; function GetIsAlive: Boolean; public constructor Create(const Host, User, Pass, DB: string; Port: Word); destructor Destroy; override; function Query(const SQL: string): TStringList; property IsAlive: Boolean read GetIsAlive; property LastUsed: TDateTime read FLastUsed write FLastUsed; end; constructor TMySQLConnection.Create(const Host, User, Pass, DB: string; Port: Word); begin inherited Create; FHandle : ConnectToMySQL(Host, User, Pass, DB, Port); FLastUsed : Now; FCleanTime : Now; end; destructor TMySQLConnection.Destroy; begin if Assigned(FHandle) then MySQL.mysql_close(FHandle); inherited; end; function TMySQLConnection.GetIsAlive: Boolean; begin Result : Assigned(FHandle) and (MySQL.mysql_ping(FHandle) 0); end;心跳檢測邏輯mysql_ping()是唯一安全的存活檢測方式。它發(fā)送一個COM_PING包服務端響應OK包不消耗查詢配額。比SELECT 1更輕量且不會因慢查詢日志滿而失敗。5.3 連接池管理器TMySQLPool的租借與歸還策略type TMySQLPool class private FList: TThreadList; FMaxSize: Integer; FIdleTimeout: Integer; // 秒 public constructor Create(MaxSize, IdleTimeout: Integer); function BorrowConnection: TMySQLConnection; procedure ReturnConnection(conn: TMySQLConnection); procedure CleanupIdle; end; function TMySQLPool.BorrowConnection: TMySQLConnection; var conn: TMySQLConnection; i: Integer; begin Result : nil; // 1. 先查空閑連接 for i : 0 to FList.List.Count - 1 do begin conn : TMySQLConnection(FList.List[i]); if conn.IsAlive and (Now - conn.LastUsed FIdleTimeout / 86400) then begin conn.LastUsed : Now; Result : conn; Break; end; end; // 2. 無空閑則新建不超過上限 if not Assigned(Result) and (FList.List.Count FMaxSize) then begin conn : TMySQLConnection.Create(localhost, root, , test, 3306); if Assigned(conn.FHandle) then begin conn.LastUsed : Now; FList.Add(conn); Result : conn; end; end; end; procedure TMySQLPool.ReturnConnection(conn: TMySQLConnection); begin if Assigned(conn) then conn.LastUsed : Now; end;關鍵設計BorrowConnection()不阻塞無連接時返回nil由業(yè)務層決定重試或報錯ReturnConnection()僅更新時間戳不驗證連接狀態(tài)——驗證交給后臺CleanupIdle線程CleanupIdle()每 30 秒掃描一次對LastUsed超過FIdleTimeout的連接調用conn.Free。5.4 生產(chǎn)環(huán)境?;罴记蒻ysql_options()的三個隱藏參數(shù)除了前文提到的超時設置這三個參數(shù)是工業(yè)現(xiàn)場的“后悔藥”參數(shù)值作用適用場景MYSQL_OPT_RECONNECTPointer(1)連接斷開后自動重連網(wǎng)絡抖動頻繁的車間 Wi-FiMYSQL_OPT_COMPRESSPointer(1)啟用 zlib 壓縮傳輸4G 模塊帶寬受限時降低流量MYSQL_INIT_COMMANDPAnsiChar(SET NAMES utf8mb4)每次連接后自動執(zhí)行避免每個 SQL 前加SET NAMES// 在 ConnectToMySQL() 中追加 MySQL.mysql_options(mysql, MYSQL_OPT_RECONNECT, Pointer(1)); MySQL.mysql_options(mysql, MYSQL_INIT_COMMAND, PAnsiChar(AnsiString(SET NAMES utf8mb4)));血淚經(jīng)驗MYSQL_OPT_RECONNECT在 Delphi 7 下必須配合mysql_ping()使用。單純開啟它當連接因wait_timeout斷開后mysql_query()仍會返回錯誤必須手動調用mysql_ping()觸發(fā)重連。所以我的習慣是每次mysql_query()前先if not mysql_ping() then reconnect。6. 從調試到上線一份可直接粘貼的mysql.pas完整單元與部署 checklist6.1mysql.pas單元刪減版僅保留生產(chǎn)必需函數(shù)unit mysql; interface uses Windows, SysUtils, Classes, Types; type PMySQL Pointer; PMYSQL_RES Pointer; PMYSQL_ROW ^PMYSQL_ROW; PMYSQL_FIELD ^MYSQL_FIELD; MYSQL_FIELD packed record name: PAnsiChar; type_: Word; max_length: Cardinal; end; TMySQL record Handle: HMODULE; mysql_init: function (mysql: PMySQL): PMySQL; stdcall; mysql_real_connect: function (mysql: PMySQL; host, user, passwd, db: PAnsiChar; port: Word; unix_socket: PAnsiChar; clientflag: LongWord): PMySQL; stdcall; mysql_query: function (mysql: PMySQL; query: PAnsiChar): LongInt; stdcall; mysql_store_result: function (mysql: PMySQL): PMYSQL_RES; stdcall; mysql_fetch_row: function (result: PMYSQL_RES): PMYSQL_ROW; stdcall; mysql_free_result: procedure (result: PMYSQL_RES); stdcall; mysql_close: procedure (mysql: PMySQL); stdcall; mysql_error: function (mysql: PMySQL): PAnsiChar; stdcall; mysql_errno: function (mysql: PMySQL): Integer; stdcall; mysql_ping: function (mysql: PMySQL): LongInt; stdcall; end; const CLIENT_PROTOCOL_41 524288; CLIENT_MULTI_STATEMENTS 1; MYSQL_SET_CHARSET_NAME 3; MYSQL_OPT_CONNECT_TIMEOUT 0; MYSQL_OPT_READ_TIMEOUT 1; MYSQL_OPT_WRITE_TIMEOUT 2; MYSQL_OPT_RECONNECT 10; MYSQL_INIT_COMMAND 11; var MySQL: TMySQL; function LoadMySQLLib(const LibPath: string): Boolean; function ConnectToMySQL(const Host, User, Pass, DB: string; Port: Word): PMySQL; function ExecSQL(mysql: PMySQL; const SQL: string): Boolean; function FetchAllRows(mysql: PMySQL; const SQL: string): TStringList; procedure FreeMySQLLib; implementation function LoadMySQLLib(const LibPath: string): Boolean; begin Result : False; MySQL.Handle : LoadLibrary(PChar(LibPath)); if MySQL.Handle 0 then Exit; MySQL.mysql_init : GetProcAddress(MySQL.Handle, mysql_init); MySQL.mysql_real_connect : GetProcAddress(MySQL.Handle, mysql_real_connect); MySQL.mysql_query : GetProcAddress(MySQL.Handle, mysql_query); MySQL.mysql_store_result : GetProcAddress(MySQL.Handle, mysql_store_result); MySQL.mysql_fetch_row : GetProcAddress(MySQL.Handle, mysql_fetch_row); MySQL.mysql_free_result : GetProcAddress(MySQL.Handle, mysql_free_result); MySQL.mysql_close : GetProcAddress(MySQL.Handle, mysql_close); MySQL.mysql_error : GetProcAddress(MySQL.Handle, mysql_error); MySQL.mysql_errno : GetProcAddress(MySQL.Handle, mysql_errno); MySQL.mysql_ping : GetProcAddress(MySQL.Handle, mysql_ping); Result : Assigned(MySQL.mysql_init) and Assigned(MySQL.mysql_real_connect) and Assigned(MySQL.mysql_query) and Assigned(MySQL.mysql_error); end; function ConnectToMySQL(const Host, User, Pass, DB: string; Port: Word): PMySQL; var mysql: PMySQL; begin Result : nil; mysql : MySQL.mysql_init(nil); if not Assigned(mysql) then Exit; MySQL.mysql_options(mysql, MYSQL_SET_CHARSET_NAME, PAnsiChar(utf8mb4)); MySQL.mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, Pointer(5)); MySQL.mysql_options(mysql, MYSQL_OPT_READ_TIMEOUT, Pointer(10)); MySQL.mysql_options(mysql, MYSQL_OPT_WRITE_TIMEOUT, Pointer(10)); MySQL.mysql_options(mysql, MYSQL_OPT_RECONNECT, Pointer(1)); MySQL.mysql_options(mysql, MYSQL_INIT_COMMAND, PAnsiChar(AnsiString(SET NAMES utf8mb4))); Result : MySQL.mysql_real_connect( mysql, PAnsiChar(AnsiString(Host)), PAnsiChar(AnsiString(User)), PAnsiChar(AnsiString(Pass)), PAnsiChar(AnsiString(DB)), Port, nil, CLIENT_MULTI_STATEMENTS or CLIENT_PROTOCOL_41 ); if not Assigned(Result) then begin MySQL.mysql_close(mysql); end; end; function ExecSQL(mysql: PMySQL; const SQL: string): Boolean; var ErrNo: Integer; ErrMsg: PAnsiChar; begin Result : False; if MySQL.mysql_query(mysql, PAnsiChar(AnsiString(SQL))) 0 then begin ErrNo : MySQL.mysql_errno(mysql); ErrMsg : MySQL.mysql_error(mysql); WriteLn(Format(SQL Error %d: %s, [ErrNo, string(ErrMsg)])); Exit; end; Result : True; end; function FetchAllRows(mysql: PMySQL; const SQL: string): TStringList; var result: PMYSQL_RES; row: PMYSQL_ROW; field_count: Cardinal; i: Integer; s: string; begin Result : TStringList.Create; if not ExecSQL(mysql, SQL) then Exit; result : MySQL.mysql_store_result(mysql); if not Assigned(result) then Exit; field_count : MySQL.mysql_num_fields(result); while Assigned(row : MySQL.mysql_fetch_row(result)) do begin s : ; for i : 0 to field_count - 1 do begin if Assigned(row^[i]) then s : s string(row^[i]) else s : s NULL; if i field_count - 1 then s : s #9; end; Result.Add(s); end; MySQL.mysql_free_result(result); end; procedure FreeMySQLLib; begin if MySQL.Handle 0 then begin // 不調用 FreeLibrary —— 交由 OS 卸載 MySQL.Handle : 0; end; end; end.6.2 部署 checklist五項必須核對的落地動作項目檢查方式不通過后果1.libmysql.dll版本匹配用dumpbin /headers libmysql.dll查majorVersion必須等于 MySQL 服務端SELECT VERSION()的主版本號連接失敗mysql_real_connect()返回nil2.libmysql.dll與 EXE 同目錄將libmysql.dll放在 Delphi 編譯出的.exe同級目錄而非System32LoadLibrary失敗GetLastError1263. MySQL 用戶權限包含USAGEGRANT USAGE ON *.* TO userhost; FLUSH PRIVILEGES;mysql_real_connect()成功但后續(xù)mysql_query()報1044 Access denied4. Windows 防火墻放行 3306 端口netsh advfirewall firewall add rule nameMySQL dirin actionallow protocolTCP localport3306連接超時mysql_error()返回空字符串5. Delphi 項目啟用ShareMem在.dpr文件uses第一行加ShareMem并引用borlndmm.dll多線程下AnsiString內存分配沖突隨機 AV6.3 最后一條鐵律永遠在Finalization中清理而不是OnClose我見過太多 Delphi 工程師把mysql_close()放在窗體OnClose事件里結果用戶點 × 時程序已開始析構全局變量MySQL.mysql_close調用的是野指針。從那以后我每次寫mysql.pas都在finalization段強制加finalization if Assigned(MySQL.Handle) then begin // 不 FreeLibrary但確保所有連接已關閉 end;并且所有業(yè)務代碼中mysql_close()只在TMySQLConnection.Destroy中調用絕不暴露給 UI 層。連接的生命周期必須由對象管理而不是事件驅動——這是 Delphi 7 直連 MySQL 能活過五年不翻車的底層契約。希望幫到你。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
香蕉五月婷婷| 婷婷五月激情中文字幕| 婷婷色导航| 欧美成人AAA片一区国产精品| 久久婷婷五月综合伊人| 五月婷无码| 成人免费高清在线播放| 亚洲无码影音| 99久久国产宗和精品1上映| 天天日日夜夜爽。| 丁香婷婷五月六月天| 色婷婷久久综合久色综| 99热插| 五月天精品| 狠狠做深爱婷婷久久综合一区| 日本人妻A片成人免费看片| www.9色色色| 亚洲激情婷婷| 很很操很很操| 激情丁香五月婷| 色香久久| 91精品无码久久久久久五月天| 射婷婷中文字幕| 九九热av| 久久五月视频| 婷婷99狠狠| 综合激情五月婷婷| 五月天堂色| 丁香五月天AV| 国产精品国产| 婷婷久久亚洲| 深爱激情综合| 蜜桃成语时李时珍 免费| 开心五月综合激情网| 五月天天爽| 综合 蜜月 婷婷| 亚洲精品久久久无码| 可以免费观看的AV| 久久资源网五月婷| 丁香色五月 97干| 五月花激情| 婷婷五月天天| 丁香五月丁香伊人| 可以免费看的av网站| 他改变了拜占庭| 大香蕉狼人久久| 久久R激情| 五月天激情婷婷| 超碰人人干| 综合色激情| 久久香蕉婷婷五月天| 五月丁香六月色婷婷综合五月天| 天天五月丁香五月| 国精产品一区一区三区免费视频 | 99狠狠色| 五月丁香激情综合网| 精品人妻在线| 91九色精品熟女内射| 国产资源在线视频| 色九月婷婷综合| 丁香玖玖视频大全| 久操热线| 色 丁香婷婷| 色婷婷狠狠干| 五月婷婷综合久久| 亚洲在线操| 天天插天天插| 五月天婷婷激情在线色图| av在线免费播放| 性色天| 色色色婷婷五月天| 亚洲午夜精品久久久久久人妖| 色婷婷丁香| 精品人人操| 婷婷五月电影院| www.婷婷.com| 久久久久亚洲A∨成人乱码电影| WWW,色五月| 久久五月丁香伊人青草| 婷婷金品综合视频| 五月天丁香| 亚洲亚洲人成综合网络| 色婷婷影视99| 婷婷六月激情小说网| 色欲久久综合| 激情丁香五月婷婷啪啪| 丁香六月啪啪| 91大操| 色丁香久久久| 六月婷婷八月丁香| 国产做爰视频免费播放| 97久久久免费福利网址| 26uuu国产色| w婷婷五月婷婷w| 日韩99精品| 婷婷97碰碰| 夜夜谢天天干| 男人視頻站| 草草操操| 久色五月天| 久草大| 国产操碰| 色狠狠色噜噜AV天堂五区| 久草丁香婷婷1024| 另类激情综合| 五月天色色无码| 97超碰9久热婷婷热| 狠狠久久婷婷| 激情综合五月.....| 亚洲另类噜噜| eeuss人妻| 大伊久久| 狠狠干综合| 9.1综合网| aaaaa不卡| 婷婷六月网| 久婷婷五月天影院| 日本五月视频| 五月天伊人| 成人AV片播放| 婷婷五月天AV激情| 九九碰九九爱97| 久久曰9| 精品人人操| 婷婷丁香五月天狠狠| 色婷婷激情| 99国产精品久久久久久久久久久| 丁香婷婷基地| 狠狠狠色激情综合适合| 丁香五月开心七月| 五月天婷婷久色| 五月激情在线| www色综合亚洲92| 成人五月天在线观看| 无人精品在线视频| 色五月激情五月天| 69超碰在线| 亚洲欧美综合7777色婷婷| 亚洲色综久久五月| WwW色婷婷| 这里只有精品免费在线视频| 九九99精品视频在线观看| 色99欧洲色19| 丁香六月久| 丁香五月婷婷五月| 五月天激情网图片 - 百度| 色五月综合| 九九色情网站| 夜夜爽天操| 亚洲精品婷婷| 亚洲成色综合网站免费观看| 99精彩视频| 五月丁香婷婷成人版| 91色情播放| 思思热久久爱| 大香蕉娱乐| 色婷婷a三区麻| 网站免费一站二站| 亚洲色欲欧美一区二区三区| 香蕉久久av一区二区三区| 五月丁香综合啪啪| 99亚洲视频| 激情五月婷婷视频| 久久这里只有欧美| av第一二区| 亚洲激情免费视频| 蜜乳人妻一区二区三区| 日韩人妻无码专区| 无码一区二区日韩| 日韩一区二区A片免费观看| 日本女天天爽| 人人操人人妻| 免费亚洲婷婷中文字幕| 无码少妇高潮喷水A片免费| www.日日日.com| 九久9精品| 日日干五月天婷婷| 五月天色色无码| 99热这里只有精品50| 9热网站| 九月婷婷丁香| 97久操视频| 婷婷五月天天天| 午夜婷婷久久 | 1024人妻| 激情小说五月天| 性做久久久久久久免费看| 久热视频A.| 欧洲色| 亚洲色爽| 五月天激情黄色网址| 思思热99热| 色噜噜夜夜夜综合网| 久久激情网| 激情婷婷五月亚洲| 婷婷五月天丁香成人社区| 久久伦乱| 五月婷婷无码专区| 久久激情综合| 五月天婷婷Av| 日韩色色视频| 天天久| 激情五月天视频| 色5月婷婷| 特级片神马电影| 自拍视频99| a在线观看| 色爱99| 国产高潮白浆一区二区| 五月丁香激情综合网| 婷婷涩五月天综合| 做爱夜夜干天天操| www、丁香五月天| 夜夜骑夜夜撸| 天天色天天操天天射| 色婷丁香| 色婷婷啪啪| 激情丁香五月| AV在线观看网站| 婷婷丁香高潮了| 色欲色香,www,com| 国产69精品久久久久999小说| 六月婷婷五月丁香| 天天综合网亚洲网站| 婷婷丁香五月天影院 | 国产激情综合五月久久| 五月丁香花视频| 五月视频日本免费观看| 久久xxxx| 超碰93在线观看| 丰满少妇猛烈A片免费看观看| 日日操日日撸| www激情五月天| 激情综合自拍五月婷婷色五月| 一本九九色| 久人操| 99高级会所久久| 97日本在线| 五月天综合网| 九九aV| 国产精品国产| 免费亚洲婷婷五月| 久久538| WWW.桔色成人.COM| 婷婷色5月天在线。| 另类亚洲视频| 婷婷六月视频| 免费人人操| AV网在线| 这里只有精品96| 99热在线观看免费精品| 色婷婷丁香五月| 超碰在线免费9| rr天天操| 五月天激情啪啪| 五月天停停成人网| 天天插天天插天天插| 色色亚洲无码| 亚洲爱爱无码婷婷色五月| 噜噜噜狠狠色综合| 色操b| 五月天 另类图片| 人人97操| 激情小说婷婷小说| 色深爱五月| 热久久77777| 天天日夜夜高潮| www.激情五月天。com| 欧美色九| 99视频这里只有免费精品| 精品人妻在线| 五月丁香六月香香蕉| AV在线免费播放| 日本激情91| 涩涩婷婷五月| 久热大香蕉| 97碰久久| 久久久久综合激动五月天| VA国产在线综合网站| 亚洲热手机在线观看| 中文字幕丰满乱孑伦无码专区| 激情五月婷婷综合| 天天综合.com| 综合色色色| 六月激情综合| www.99热视频| 无遮挡国产高潮视频免费观看| 五月婷婷五月色| 亚洲色图欧美色图日本视频| 五月色亭丁香| 91人人操人人爱| 丁香五月区| 激情色播| 99热的无码| 五月婷婷丁香五月 | 丁香激情综合| 99色精品| 超级碰碰一区| 亚洲综合色婷婷| 五月丁香色色综合| www.99情趣网| site:901-07.com| 26uuu国产精品| 成人性爱无码| 久热这里| 久久九九re热| 26UUU成人网| 九九无码视屏| 五月丁香激情综合| 午夜九九九九九九| 亚洲99激情| 天天免费日日夜夜夜夜| 成人va在线播放| 亚洲激情综合| 色老久久| 六月色国内综合| 九月激情综合| 一区操| 色婷婷777狠狠| 五月天综合缴情网网站0| 五月激情六月婷婷| 国产又黄又爽又色的免费| 五月婷护士| 久久综合激情| 97在线/亚洲| 综合热无码| 婷婷99视频精品| 偷偷与邻居做爰完整视频| www:99热视频| 99热这里只有精品一| 婷婷五月天天爽| 精品夜夜澡人妻无码AV| 久久激情五月| 免费看成人747474九号视频在线观看| 五月丁香亭亭电影久久| 五月色婷婷在线观看| 2015好吊操| 天天爽天天草| 伊人99热| 国产操碰| 96精品久久久久久久久| 日韩性爱无码| .操區COm| 婷婷六月激情| 2025天天操| 97干在线| 五月丁香 啪啪| 亚洲丁香五月在线观看| 丁香久久| 婷婷五月综合色中文字幕| 激情五月天色播| 五月天婷久久| www.思思99热| 国产成人精品一区二三区熟女在线| 日本三级日本三级三级人妇四虎| 女人天堂AV| 97成人丁香| 婷婷热婷婷色| 99国产精品久久久久久久久久久| 亚州精品色情在线观看| 97在线精品| 五月天婷婷基地| 91无码视频| 国产色视频网站2| 欧美狠狠地| 秋霞少妇AV网站| www.99热最新视频8| 丁香久久| 久久视屏这里只有久久| 婷婷丁香熟妇综合网| 九九操操| 综合五月婷婷| sewuyue第四色| 丰满人妻一区二区三区| 五月天a婷婷伊人| www.夜夜操.com| 久久99综合| 黄网在线免费观看| 五月丁香怕啪啪| 天天爱天天做天天操| 色爱综合网| 日本啪啪天堂| 色五月婷婷久久爱| 五月丁香色停停啪啪啪| 亚洲中文乱字字幕在线永久| 日韩色五月| 99操视频| 色五月成人网| 99五月婷| 久色资源| 天天夜天天色天天| enecarbon-materials.com污K127封锁请涟系@wip1688 | 99热这里有精品| 99久久99久久综合| 婷婷中文在线| 婷婷五月天成人导航| 天天干天天做| 日日操天天爽| 97色色色| 超pen个人视频97| 丁香婷婷十月| 亚洲AV网址| 五月激情天| 天天艹天天色| 丁香婷婷五月综合影院| 中文字幕按摩做爰| 久久伊人五月天| 97碰碰视频在线观看| 婷婷丁香五月综合| 五月婷六月| 综合色99| 99热伊人综合| 九九人人操| 丁香亚洲婷婷五月| 五月婷婷色色色| 五月丁香婷婷六月| 婷婷五月天欧美图片在线播放电驴| 婷婷六月香| enecarbon-materials.com污K127封锁请涟系@wip1688 | 婷婷色五月丁香六月欧美啪| 69人人操人人爽| 97色色色| 色五月五月天| 婷婷的99视频网站| 婷婷97C| 伊人激情啪啪| Www.激情| 婷婷五月天亚洲天堂| 一起草av在线观看| 欧美亚洲色色色色| 大香蕉啪啪网| 91精品综合久久久久久五月丁香| 夜夜噜夜夜奇| 超碰97在线操| 五月婷婷丁香啪啪| 丁香五月电影| 婷婷色色欧美| 久操大屁股女人av| 免费无码毛片一区二区A片| 手机旧版看人妻1025| 婷婷五月丁香五月天| 五月久久婷婷丁香| 99男人的天堂| 香蕉97碰碰碰超视精品| 欧美在线ee日韩| 99热精品在线在线| 九九热精品视频| 涩五月婷婷| 色情五月天A片| 永久的网站AAAA | 91久久久久| 丁香五月综合| 亚洲综合久| 亚洲第一精品成人999久久精品| site:xmssd.com| 婷婷五月网图片区| 色色五月丁香婷婷综合| 996re热精品视频| 国产偷人爽久久久久久老妇APP| 男女99免费视频| 深爱激情综合网| 国产精品视频久久99| 亚洲激情网| 伊人婷婷综合| 色婷婷狠狠| 综合婷婷久久| www.丁香五月| a网站免费观看| AV成人在线播放| 国洲夜色亚热在线久久| 久热99久热| 色综合77777| 国产内射婷婷| 中文字幕不卡网站| 97精品综合久久内射| 丁香五月天AV在线| www。五月,com| 狠狠狠狠狠狠狠狠狠狠狠色宗合图片 | 色婷婷9| 啪啪黄页网| 亚洲色色五月天| 婷婷激情综合色五月久久图片| 色婷婷亚洲综合av| 婷婷丁香社区| 亚洲精品国产成人AV在线| 激情综合色网| 99热精品少| 美女婷婷六月色| 第二色AⅤ| 色五月婷婷成人视频| 国内婷婷丁香社区在线播放| 五月婷六月天| 日本婷色| 亭亭五月色男人| 九九热在线精品| 丁香五月性爱| 日本在线观看aaa 99| 久久五月天免费网站| 91激情五月开心| 亚洲中文字幕av| 天天色播| 操人妻AV| 亚洲黄3级片网站欧美| 97精品自拍| 香蕉久久国产AV一区二区| 五月丁香婷婷色播无码| 日韩AV片| 五月婷久久| 操逼棍操逼| 五月婷婷视频在线观看| 色五月天婷婷| 第四色色六月色综合| WWW·色色色·COM| 九九色之九九色88| 色99视| 天天干天天干天天干天天干天| 天天爱天天狠天天透| 天天爽天天日| www.com任你艹| 99热自拍| 国产婷婷五月天| 亚洲在线综合| 亚洲AV日韩在线观看| 色婷天天| 五月天婷婷人妻| 夜夜骑夜夜撸| 综合激情九月婷婷,激情综合婷婷中文字 | 九九热色视频| 九九婷婷五月天| 久久综合激情五月天| 啪啪六月婷婷| 久久综合婷婷| 色婷婷A| 操逼福利视频| 久久婷婷亚洲| OUMEIRIHANCHENGREN| aaa丁香五月天| 欧美25p| 九九在线精品| 亚洲中文av| 天天日日综合| 久久久国产精品黄毛片| 五月婷婷黄色| 99激情视频| 婷婷情色开心五月天99| 五月激情丁香五月| 久久99操| 久婷久婷激情肉| 五月天激情中文字幕| 爱久综合| 啪啪黄页网| 欧美日韩AAA| 99网| 日本美女天天日天天爽| 精品久久99码| www.99视频| 99国产精品久久久久久久久久久| 九九色插| 校园激情 亚洲| 超碰在线国产| 99热这里只有99| av色婷婷| 热久久91| 九九AV在线| 狠狠久综合| 丁香五月天天高清在线| 日本在线播放97| 成人小说 五月天 婷婷| 中文字幕永久在线| 日本精品。999| 涩涩五月天| www色婷婷com| 色婷婷六月天在线| 综合另类激情| 激情婷婷五月社区| 久草五月婷| 九九精品在线观看视频6| 成人.在线日韩| 思思网站| 97夫妻超碰| 激情五月色综合国产精品| 亚洲精品V天堂中文字幕 | 天天干天天色天天干| 99ER热精品视频| 情五月亚洲婷婷| 亚洲精品久久久久久久久久飞鱼| 五月丁香婷中文字幕| 超级碰碰97在线| Jh7Uf088VHafNm| 九月丁香八月婷婷加勒比| 亚洲综合婷婷五月天| 五月激情四射网站| 久久免片| 综合激情在线| 久久99精品视频| 欧美色色色色色色色色色色影视| 99精品国产在热久久| 日日夜夜噜噜爽爽| 99在线播放| 丁香婷婷91在线观看视频| 大香蕉五月天婷婷丁香91| 五月天伊人综合| 丁香五月天导航| 99免费在线视频| www.俺去也com| 人妻中文av| www..999热久| 开心久久爱五月天| 欧美一线视频| 超碰在线91| 狠狠婷婷爱| 国产av网| 色五月综合激情| 亚洲舔观看| Av在线不卡一区| 99久久玖玖| 六月色 亚洲| 欧美成人性爱网| 婷婷字幕在线| 丁香五月天资源网| 99久久99热| 91美女啪啪| 丁香五月天激情综合| 五月天婷婷久草丁香| 亚洲啪视频| 色欲Av五月天| 射婷婷中文字幕| 99ri视频在线播放| 五月婷免费视频久久久| 98色丁香五月婷婷综合网| 五月激情偷拍| 99热费观看| 日本一级一级一级一级| av五月天婷婷丁香| 性色五月天| 激情五月狠狠| 色色综合成人网| 色天使色综合| 久久久婷| 久久作爱| 天天爽,夜夜爽| 久久五月天精品视频| bukadeavzaixian| 丁香五月性爱| www.婷婷五月天| 另类视频丁香五月| 亚洲久久视频| 久久综合性| 91传媒无码人妻精| 99热 精品在线| 久久香蕉网| 激情五月天偷拍综合网| 五月丁香狠狠地噜噜噜噜| 色五月首页| 九月丁香八月婷婷久久综合久97| 女人被躁到高潮嗷嗷叫小| 亚洲AV网站| 激情五月天婷婷五月天| 五月丁香六月香综合激情| 久久色五月天| 久久久激情视频| 免费在线a| 婷婷婷狠狠| 五月丁香婷婷色| 超碰99在线观看| 播五月开心婷婷欧美综合| 婷婷五月久久| 怡红院院久久| 五月婷婷久久激情| 狠狠操之狠狠操| 日本91在线| 九九热re99re6在线精品| 9久操| 久久综合9| 丁香婷婷五月色综合| 无码人妻精品一区二区蜜桃色欲| 久久99精品视频| 丁香婷婷久久| 色婷婷小说| 1024国产| 综合激情五月天| 色综合色五月| 色色五月婷| 婷婷五月丁香五月| 五月天激情视频| 五月婷激情| 天天干天天干天天操| WWW,五月| 极品人妻VIDEOSSS人妻| 亚洲精品一区中文字幕乱码| 婷婷狠狠综合网入口| 激情久久伊人| 91丁香色五月| 激情综合色婷婷啪啪六月天| 丁香五月人妻| 九九久久综合| 青青草搞屄视频网站| 天天成人综合| 人人操人人爱丁香五月| 色综合激情| 色婷婷综合影院| 九九婷婷综合| 亚洲中文字幕av| 国产毛片精品一区二区色欲黄A片| 欧美丰满熟妇BBB久久久| 大香蕉五月婷婷丁香| 99久久天堂婷婷| 六月婷婷香蕉| 亚洲激情亚洲激情| 色五月成人在线| 婷香五月激情视频| 色色色色色色色色网站| 午夜天堂一区人妻| 在线sebiav精品视频| 秋霞日本免费毛片A片| 操操碰| 五月丁香婷婷婷婷综合网| 超碰1999| 噜噜噜久久| www,99热在线观看| 久久六月天| 森林影视大全,最好看的2019年视频 | 九玖视频这里只有精品| 人妻久久久久久久久| 99在线观看视频| 色婷婷97| 天天爱天天天射AV| 久超超碰| 天天干天天操天天上| 丁香五月六月综合激情| 婷婷丁香五月天激情| 大香蕉在线99热| 中文精品在| 久久成人综合五月天| 五月婷婷六月激情| 性av| 97碰| 色色色.COM| 思思久久精品| 亚洲第二AV| 综合久久高清| 久久五月六月| 中文字幕色色| 欧美日综合| 依人大香蕉| 超级黄色片| 伊人激情| 天天综合久久| 久久99激情五月天| 婷婷五月 丁香六月| 久久久无码精品成人A片小说| 无码人妻少妇色欲AV一区二区 | 五月婷婷综合性爱噜噜| 丁香五月婷婷成人综合| 色射影院| 伊人狠狠色婷婷综合丁香一区| 日韩五月天婷婷| 婷婷九九| 亚洲AV无码成人精品区电影网| 深爱婷婷色| 五月婷婷天| 97精品自拍视频| 99热这里只有精品 搜| 91超碰人人操| 黄网免费观看| 久热免费| 亚洲区1| 天天摸夜夜爽天天做| 激情五月天电影| 五月天久久婷| 九九操操| 亚洲婷婷激情五月天| 日本久热| 91婷婷丁香五月亚洲| site:esunnet.com| 四虎成人精品永久免费AV九九| 日本少妇AA一级特黄大片| 色婷婷五月综合| 五月丁香色| 激情综合99| 另类综合色| 亚洲AV永久无码影院黑人 | 丁香婷婷综合色五月激情国产基地| 婷婷五月天深爱| 国产这里只有精品| 久久丁香五月婷婷激情综合网| av在线观看免费| 色噜噜狠狠色综合网| 天天在线XXX| 人人看人人97| 玖玖五月丁香| 在线观看亚洲视频影院| 人妻aV在线| 激情99| 色婷婷免费观看| 超碰人人射| 日韩AV大全| 色五月大香蕉| 亚洲综合激情五月久久| 天天做天天爱天天爽在| 成人精品视频99在线观看免费| 99这里只有免费的小视频在线观看| 婷婷六月色| www。五月天。com| 久久免费高| 亚洲热久久| 大伊香蕉玖玖爱| 狠狠色噜噜狠狠狠狠综合| 在线看片av| 性爱视频久久| 亚洲综合视频一下| WWW.HENHENL.| 天天综合五月天| 妇激情基地| 五月天社区| A久网| 日韩精品一品二区三区的使用体验| 操逼六区| 深爱五月激情综合| yjzz亚洲国产| 天天射影院| 国产亚洲99| 日日杆天天| 99丁香五月婷| 极品人妻VIDEOSSS人妻| 狠狠狠人妻| 国产XXXX搡XXXXX搡麻豆| 爱草视频在线观看| 深夜婷婷 丁香| 婷婷在线免费| 欧美日韩精品一区二区三区钱| 欧美va欧美va差| 天天色丁香| 国产免费一区二区在线A片视频| 天天五月丁香五月| 熟妇无码乱子成人精品| 丁香六月天婷婷开心综合| 五月天久草| 九九热只有精品| 婷婷五月天电影在线| 在线观看亚洲视频影院| 最近中文字幕大全免费版在线 | 色情五月婷婷| 热的五码久久精品| 欧美婷婷色五月网| 日日撸夜夜操| 五月丁香六月婷婷操操操| 色婷婷久久| 久久99草五月婷婷| site:pnnrt.com| 婷婷五月亚洲一本在线丁香| 综合亚洲色色| 大香蕉七区| h在线看免费版在线看| 色噜噜狠噜噜视频| 亚洲五月天综合| 人妻久久婷婷| 成人国产网| 天天日天天摸| 精品99在线观看| 丁香婷婷五月六月天| 国产精品久久久久久白浆色欲| 日操夜操天天操不卡| 99爱在线精品视频免费观看| 亚洲精品午夜国产va久久成人| 色婷婷综合久色AV五色最新| 五月开心久久| www天堂99| 亚洲五月婷婷| www久久久久久久97| 色五月丁香六月欧美综合| 久久黄色网扯| 97色色色| 伊人网啪啪| 色欲AVV| 风流少妇A片一区二区蜜桃| 久草天堂| 超碰国产在线观看| 丁香六月成人| 五月花婷婷丁香| 高清无码一区二区三区四区| 五月天色色激情综合| 99啪啪网| www.色情五月天.com| 六月成人网| 婷婷丁香六月| 久久九色| 丁香激情网| 婷婷色婷婷| 亚洲精品视频电影| 96丁香六月婷婷蜜桃综合久久| 日韩欧美骚货| 日日操日日射| 婷婷五月丁香av网站| 奇米四色五月天| 亚洲欧美在线观看| www色色com| 色婷婷六月| 六月丁香影院| 天天干天天干天天干天天干天天干天天| 91精品久久久久久久| 色婷婷在线影院| 久草婷婷网| 激情内射人妻1区2区3区| 日日夜夜天天| 青青久在线视频免费观看| 丁香婷婷网| 99热这| 色五月婷婷老师| 一本色道久久综合狠狠躁小说| 婷婷色五月丁香六月欧美啪| 激情五月天小说网| 亚洲激情av| 图片区 小说区 区 亚洲五月| 超碰在线免费| 99在线精品视频| 国产精品色婷婷AV综合色色| 色五月天综合| 99热精品10| 欧洲亚洲免费视频区| 天色综合网站| 色五月婷婷天天操夜夜操| 99热99re6国产在线播放| 26uuu精品国产| 99∨VTV| 亚洲天堂久久| 99热这里有精品| 婷婷五月丁香亚洲| 亚洲 成人 电影av在线观看| 五月狠狠| 亚洲婷婷五月天在线激情综合网| 99热这里只有精品10| 天天射天天射一道本日本社区| 亚洲欧州色情在线观看| 色九九九九| 51国精产品自偷自偷综合 | 99热这里是精品| 五月激情综合网| 99在线精品免费视频| 热热色色五月天婷婷| 中文av在线观看| 五月色网| 欧美亚洲操逼| AV成人在线播放| 色情综合| 丁香五月婷婷激情蜜桃| PORNY九色9l自拍视频成人| 96人人操人人操人人| 亚洲性爱区无码区| 五月丁香久人妻中文| 91超级碰碰碰| 色约约视频一区二区三区四区五区 | 国产AV一区二区三区最新精品 | 激情五月激情综合网| 久久这里都是精品| 无码碰碰| 996热| 99亚洲无码| 国产激情综合五月久久| 五月天综合在线网| 黄色片精品| 狠狠999| 五月婷婷偷拍| 婷婷五月花.97| 亚洲成人一区| 久久久久人妻中文| 99热这里只有精品3| 狠狠色丁香| 日韩av变天就操逼不卡区| 伊人五月天97| 色综合开心五月深爱五月| 国产婷婷五月天| 操逼五月婷婷| 亚洲中文字幕av| 久久国产色| 人妻体体内射精一区二区| WWW99视频| 丁香激情六月天婷婷| 久久性爱视频| 碰碰碰97免费精彩视频| 97激情五月天| 99热在线观看| 成人一区在线观看| 国内自拍97在线| 激情五月综合网| 4399在线观看免费高清黄色视频| 日日懆天天懆| 色就是色婷婷五月亚洲激情| 婷婷五月天av| 五月天婷婷三级黄| 成人网在线视频| 丁香五月社区| 99热免费精品| 看全色黄大色大片| 五月丁香综合啪啪| 五月婷婷成人| 六月婷婷六月天天在线免费| 99热超碰在线| 99色在线| 99re在线观看| 二色AV| 婷婷九月色| 99re思思热久久| 丁香六月婷婷五月婷婷| 97夫妻超碰| 成人天天爽| 五月天婷婷在线播放| 日本色色色| 性爱网六月丁香| 色噜噜狠狠狠综合曰曰曰| 狠狠色综合网| 99视频超级精品| 色综合婷婷| 色五婷婷| 99色干| 五月丁香六月婷婷久久肏| www.com五月天| 激情婷婷。| 五月激情久久综合网| 九九热在线视频观看| -91九色大屁股| www.久久久久久久| 激情婷婷黄色五月| 琪琪秋霞| 色色99| 久久9999| 丁香五月电影| 1024欧美看片| 狠狠人人| 婷婷五月激情小说| 嫩草国产| 99视频这里只有精品10| 九九一区| 69五月天视频| 丁香五月Av| 日韩九区| av中文在线| 九九热婷婷| 欧美国产一区二区三区| 狠狠婷婷色| 亚洲综合婷婷五月| 天天插天天插| 91精品熟女| 九九亚洲| 第二色AⅤ| 国外亚洲成AV人片在线观看| 欧美美女国产日韩一区二区久| 九九热在线视频| 五月丁香啪啪啪啪| 欲色人妻| 9久热在线视频精品| 五月天激情四射| 99热欧美| 六月丁香好婷婷| 噜噜狠狠色综合久| av中文在线| www.婷婷五月天啪啪| 亚洲无码 图片区| 开心五月网 | 91九色精品女同系列| 天天日天天色| 激情综合网 激情五月天| 久久综合香蕉国产国产蜜臀AV| 丁香五月欧美午夜视频| 色情五月| 91丁香五月| 激情99。| 91精品综合久久久久久五月天| 91日日日| 台湾综合丁香五月蜜桃| 97色精品视频 | 色婷婷无吗| 九九操操| 婷婷激情综合网| 亚洲成人av在线播放| 色五月激情| 精品怡红九九九| 操逼三区| 国产成人精品一区二三区熟女在线| 伊人AV五月婷| 一起草av| 精品九九久久| 日狠狠| www.99成人视频| 大香蕉520| 中文字幕在线视频播放| 日本人妻A片成人免费看片| 婷婷五月AV| 99自拍网| 日韩AV免费| 这里只有精品视频| 思思热精品在线| 日本人妻丁香婷婷久久寝取熟女五月| 欧美婷婷丁香五月| 日本猛少妇色XXXXX猛叫| 五月丁香婷婷深深爱| 天天操天天爽天天爱| 六月久久婷婷| 91免费啪视频| 五月丁香性爱| 日本精品。999| 综合久久久婷| 99热国产| 看国产探花操逼三级片| 六月丁香色色| AV中文字幕夜夜操b天天摸bb | 色天堂婷婷| 久久久婷婷| 亚洲色婷婷| 亚洲亚洲人成综合网络| 欧美综合婷婷网| 成功精品影院| 婷婷五月丁香六月| 五月天激情久久| 美女激情婷婷| 色婷婷五月天天天天天| 91要啪| 日韩精品一区二区刘| 五月视频日本免费观看| 婷婷九月色| 久久九九网| 激情小说婷婷| 六月婷婷久久大全| 激情五月六月丁香| 亚州激情在线视频| 超碰免费在线| 生活片五区| 婷婷刺激综合| 色yeye色综合| 青青久久五月| 日韩一区二区A片免费观看| 大香蕉久| av在线免费网站| 情涩婷婷五月天| 天天干-天天日| 狠狠色婷婷丁香六月| 99碰网站| 男女啪啪视频久 9| 综合久久久| 久久99网| 丁香五月婷婷视频| 另类综合国产| 伊人国产婷婷五月天| 91日韩在线| 91丨九色|PRNY熟妇| 亚洲天堂色| 99网| 久久久18| 九九热免费视频| 99青青草| 五月丁香天堂网婷婷| 思思久久99热| 九九综合久久| 超碰碰碰碰| 六月婷婷深深爱| 色色色色色色色综合| 成人久久天天x资源站| 欧美色骚婷婷五月天| 婷婷五月天综合蜜桃| 99热这里精| 色五月婷婷五月丁香五月| 色五月丁香伊人五月| 99热这里只有精品22| 婷婷社区五月天| 大香蕉99热| 婷婷网五月天| 日本欧美成人片AAAA| 中国女人做爰A片| 国产AV成人精品| 婷婷丁香先锋资源网站| 在线成人网址| 久久久久久久久久久久久久人妻视频| 五月丁香六月欧美综合| 热99只有里视频| 婷婷丁香五月综合免费视频百花| 成人AV免费观看| 成人精品视频99在线观看免费| 丁香五月影| 丁香五月婷婷亚洲激情四射| 99手机在线精品视频| 五月天激情四射| 婷婷激情蜜桃玖玖丁香| 五月天俺去也| www.五月天色色.com| www.超碰在线| 色综合婷婷99| 国产av基地| 秋霞三级影视资源| 色色色.COM| 99re热在线视频| 中国女人做爰A片| 色yeye色综合| 九月丁香| 五月婷六月丁| 亚洲成人无码网站| 日本99婷婷| 久久久久久久97| 五月丁香激情五月天| 丁香五月天啪啪激情综和网| 丁香五月伊人| 亚洲六月色| 五月婷婷色在线| 久久久久视剧HD| 91九色精品女同系列| 激情深爱综合| 色婷婷五月天在线| www.婷婷五月天| 激情婷婷五月| 99热99日天天干| cao久久| 丁香婷婷久久| www激情网| 丁香六月婷婷综合激情欧美| 777精品久无码人妻蜜桃| 婷婷在线五月综合| 九色视频91| 九九热经典视频在线观看| 99久热这里只有精品| 五月婷婷综合在线视频| 精品久色| 五月婷婷在线视频| 国产精品久久久久久久久久| 丁香六月久久| 久热精彩视频98| 五月天丁香看婷婷| 六月婷婷天天操夜夜爽视频| WWW丁香五月| WWW.五月天9999| 色婷婷综合久久久久| 牛牛色av| 色播五月丁香| 成人综合视频在线| 五月婷婷啪啪网| 99热网站| 狠狠干天天内射| 五月婷婷久久久| 成人网站av免费网站推荐| 激情五月婷婷色| 伊人丁香五月天丁香在线婷| 婷丁五月| 丁香六月激情| 天天日天天爽| 这里只有精品视频222| 9久久婷婷国产综合精品性色| 青青草婷婷久久| 婷婷激情五月色综合| 97伦乱| 亚洲人妻一区二区| 天天色综网| 人妻 性久久久久久| 日逼影音先锋男人AV资源站| 色宗合,宗合网| 青草视频在线观看视频| 成人色站,在线视频,看片-SS1AV| 狠狠草狠狠草| 老师的粉嫩小又紧水又多A片视频| 色天堂操| 色色色色av色色色色| 超91热| 第一区久久网站| 国产成人AV| 五月综合777| 青青久在线视频免费观看| 狠狠88综合久久久久噜噜噜| 99无码| 操操操av|