免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

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
返回資訊列表
五月丁香久人妻中文| 国产第99页| 天天透天天摸天天舔| 色婷婷色五月综合| 青青草大香| 超碰99资源站| 日韩成人中文字幕| 欧美狠狠色| 99热在线只有精品| 婷婷激情丁五月| 亚洲无aV在线中文字幕| 天天日天天干天天操| VA五月激情在线| 97成人在线视频精品| 色五月婷婷基地| www天天色天天射| 婷婷丁香五月天色播网站| 99精品丰满| 人妻少妇色综合| 欧美成人精品一区二区 | 色婷婷影视| 六月丁香婷婷大香蕉| 日韩啊啊啊| 九九热精品6| 丁香六月啪| 野战毛片三一3| 色欲Av五月天| 丁香婷婷激情五月色| 超碰二区| 婷婷伊人| 久久亚洲色导航| 欧美三级黄色片久久| 五月婷婷色色爱| 五月天国产| 免费播放片大片| 色婷婷狠狠久久综合五月| 做爱夜夜干天天操| 国产色婷婷亚洲| 五月天久久久| 亚洲成人色五月婷婷综合| 51XX午夜影福利| 婷婷欧美激情| 大香蕉九操| 久久九九精彩| 色婷婷操逼| 天堂中文国产| 色久九| 久久嘟嘟丁香| 激情综合五月丁香| 久久99激情| 五月色婷婷亚洲 | 五月亭亭欧美女人| 九九色色色| 人人综合91网| 五月婷婷啪啪| 一二线视频 另类| 99在线精品观看99| 色九九中文字幕| 91九色PORNY肉丝在线| 内射人妻视频国内| 9 1 A v久久久| 91久久久久| 牛牛澡牛牛爽| 婷婷va| 99热在线看| 日日噜噜久久婷婷五月天| 婷婷六月久久| 久久永久视频| 激情婷婷亚洲五月| 婷婷五月天六月丁香| 色色色综合| 久久婷五月综合| 精品久久久999| 狠狠色狠狠| 婷色五月天| 99热在线观看精品| 香蕉曰比| 九九九九毛片| 五月婷婷精品无在线| 色婷亚洲| 丁香六月天婷婷色| 色五月婷婷老师| 色综合久久中文| 综合啪啪| 操B无码视频国语| 国产美女主播vip| 色色色色色色色色色色色色色97| 婷婷丁香77777| 人妻久久久久久久久妻久久久久| 久色视频| 亚洲色无码A片一区二区麻豆| 人人综合色| www,色婷婷| 久久这里只有国产| 五月婷婷69| 九色婷婷| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 激情综合婷婷久久| 国产寻花在线| 色呦呦美女| 色999五月色| 五月婷婷丁香日韩在线| 日本三级黄色大片| 99色性爰网络| 激情六月丁香| 少妇达人正片在线播放_ikun_福利吧| 五夜丁香| 国产午夜精品AV一区二区麻豆| 天天色2017| 草草影院爱爱| 丁香五月人妻熟女| 九月丁香婷婷| 4438国产免费看| 99久在线精品99re8热| 丁香五月人妻熟女| 97av在线视频| 99精品无码| 成人资源在线| 久久性爱视频这里只有精品| 丁香五月婷婷久久久| 激情久久四色| 99激情网| 啪啪色区| 色爱五月天| 99日韩| 久9热插入| 色亚洲无码| 开心五月激情婷婷| 色日本颜射| 亲子乱AV一区二区三区下载| 色五月婷婷亚洲最大| 五月亭亭开心网| 狠狠色婷婷丁香五月| 成人免费120分钟啪啪| 久久综合香蕉国产国产蜜臀AV| 色优久久| 综合激情站| 亚洲无码激情| 丁香五月婷婷色情综合| 岛国AAAV| 99re这里有精品手机在线| 色色99| 五月天丁香综合在线| 很很操很很操| 国产乱人偷精品人妻A片| 五月丁香久久综合| 99ri精品视频在线观看| 色九亚洲| 五月天婷婷网站888| 婷婷五月丁香四射| 丁香五月六月激情久久| AV网在线观看| 婷婷情爱五月天6| 久久婷婷五月天丁香| site:esunnet.com| 成人精品视频99在线观看免费| 丁香五月综合高清在线| 天天操天天曰| av 一区三区四区| 婷婷五月天激情小说| 婷婷趴趴| 国产精品色婷婷99久久精品| 色天堂在线| 激情五月丁香五月| 久久婷婷人人| 婷婷五月天色色| 久久激情五月天| 99色热视频在线| xxxx五月天色色| 欧美激情综合色丁香婷婷五月天| 在线观看欧美3区| 天堂综合久久| 91热久久| 天天插综合在线| 激情深爱五月天| 综合激情啪啪| 综合色图婷婷| 可以免费观看的av| 久久亚洲婷婷| 五月丁香| 日日夜夜小色哥| 国产一级黄色影片,| 99久久综合精品五月天| 吾爱AV导航| 色综合色综合色综合色综合| www.日韩国产| 99日韩| 无码G高清天| 国产毛片精品一区二区色欲黄A片 国产人妻777人伦精品HD | 婷婷丁香色五月天| 婷婷五月婷婷| 亚洲久热| 久热视频97AV在线观看| 日本操碰碰| 丁香六月啪| 久久丁香五月天| 婷丁香五月天| 色色丁香五月天社区| 色啪网| 99热自拍| 伊人五月婷| 久色资源网| 狠狠综合色网| 少妇水多A片太爽了| 色婷婷五月天激情综合| 色婷婷先锋| 岛国av网站| 五月丁香在线精品| 亚洲成人另类| 五月天开心色色网| 久婷| 国产精品成人av在线观看春天| 九九九九无码| 狠狠操天天干| 久久久久人妻| 亚洲十月婷婷综合| 在线观看的av| 丁香色婷婷色手机免费在线| 女婷久久| 婷婷五月天成人综合网| 五月婷婷另类| 大香婷婷| 免费无码毛片一区二区A片 | 碰97久久| 欧美激情综合色综合色| 超碰99在线| 91在线操逼视频| 中文av网| 91大屁股| 新久久五月天激情| 97色97干| 99五丁香月| 超碰99在线观看| 伍月婷婷六月丁香| 五月丁香日本在线视频观看| 五月婷久久久| 日韩日比视频在线| 色五月婷婷中文字幕| 丁香五月天网友自拍啪啪啪视频| 婷婷五月成人有| 色原狠狠综合| 日韩专区五月天婷婷丁香| 久久停停超碰| 激情五月婷婷五月| 天天综合网网欲色| 五月综合亚洲| 996er在线观看| 激情婷婷99| www.色五月| 免费视频99| 性婷婷| 色老久久| 色射7856五月天激情四射| 五月婷婷六月天| 五月天天久久香| 天天日,夜夜爽| 日本久久婷| 精品婷婷丁香五| 丁香五月激情综合| 狠狠色噜噜狠狠狠888| 野战毛片三一3| 6080av| 欧美性二区| 国产4P视频精品五区| 夜夜嗨一区二区三区直播内容| 九九色精品| 人人干av| 丁香五月天视频| 色丁香五月综合网| 五月丁香六月婷婷婷婷| 天天影视色综合网| 婷婷无码视频| 婷婷五亚洲| 丁香五月天人体| 操人91| 99在线视频女女视频| 久草婷婷在线| 日韩三十六页| 狠狠色综合图片| 欧美日韩二区在线| 91丨九色丨国产| 免费视频WWW在线观看网站| 99re这里| 五月丁香综合啪啪| http:色情日本com| 色色三级视频| 狠狠狠狠狠狠草| 丁香五月婷中字在线| 亚洲经典三级| 五婷婷综合网| 久草视频大香蕉99| 9精品视频在线| 午夜福利8055| 精品99在线| 欧美日韩五月婷婷| 国产精品人妻欲求不满| 亚洲小视频免费看| 高清无码一区二区三区四区| www.minyis.com【JT】国内CDN落地页保证转化QQ2101460746 | 欧美综合婷婷网| 狠狠另类视频| www.亭亭五月天| va亚洲中文在线| 5月婷婷五月天| 激情五月天色婷婷| 丁香 久久| 91大神操美女| 色婷婷基地| 五月激情天| 精品一二三区久久AAA片| 岛国在线观看91| 琪琪色网在线| 92国产福利| 婷婷的99视频网站| 婷婷激情五月天色| 婷婷五月天堂| 婷婷五月天久久久| 色呦精品| 9热精品| 久久婷婷青草五月天| 欧美狠狠草| 久久久婷丁香五月| 五月婷婷激情综合| 国产精品色色| 最新日韩久热免费视频看看| 激情五月天婷婷直播| 99re这里只有精品视频6| 操操操操操电影网| 成人电影在线免费试看| 69精品人人人人人人人人人| 九9九9无码| 五月天激情综合在线| 五五月五月| 五月天激情亚洲| av在线观看网站| 日本狠狠网| 亚洲成人人人操| 伊人喵咪a V| 丁香六月亚洲| 久久这里只有精品99| 97超碰人人操| 啪啪操超碰| 就去涩涩丁香五月天| 天天干天天爽天天操| av在线免费网站 | 欧美天天五月丁香免费观看| 五月伊人婷婷| 99热综合| 久久伊人9| 这里只有精品视频在线观看免费| 婷婷五月在线播放| 精品色色| 亚洲六月色婷婷| 午夜爱爱爱成人| 五月天播播| 婷婷激情五月| 丁香婷婷色九月| 婷婷五月丁香基| 超级碰碰碰97免费| 操操操AV| 国精产品一区一区三区免费视频| 丁香久久九九99| A短视频免费在线观看| 国产精品国产| 婷婷五月天资源| 色婷婷五月在线| 九九艹女| 欧洲日韩一区二区三区| 国产性爱亚洲是图| 色婷婷综合亚洲| 色婷婷五月天在线| 中字幕视频在线永久在线观看免费| 涩 五月 婷婷 狠狠| 99在线免费视| 欧美日韩成人在线| 婷婷色色丁香五月天| 六月丁香婷婷在线波多 | 色视五月天婷婷| 五月天婷婷av| 亚洲综合另类| 天天干狠狠| 欧美日韩中文国产一区发布| 熟女婷婷网站一婷婷五月一丁香婷婷一婷婷激情网| 97超碰在线免费观看| 激情小说色五月| 欧美va精品va老师va| 久色大| 丁香色色五月| 射久久丁香五月| 色五月激情网| 色欲婷婷夜夜| 99热9| 久久婷综合| 色婷婷久久| 在线免费视频caop| 99热777| 亚洲亚洲人成综合网络| 丁香六月婷婷久久综合八月| 99re8这里只有精品99re8热视频| 久久狼人天堂| 97香蕉碰碰人妻国产欧美| 成人网站高清无码| 五月天婷婷成人网| www激情网站| 青青草激情网| 亚洲九九婷婷| 九九热re99re6在线精品| 欧美色偷偷大香| 亚洲综合视频一下| 婷婷成人五月天成人文学| 色呦呦在线| 99热这里只有精品13| 久久九九99| 激情深爱婷婷网| 丁香五月AV| 九九人妻福利| 亚洲国产精品二二三三区| 亚洲激情无码久久| 国产av天天插天天操天天爽| 一本久道综合色婷婷五月| 国内精品免费一区二区2009| 精品无吗va视频免费观看| 丁香六月av| 五月综合激情视频在线| 99热在线播放| 九色视频这里只有精品| 中文AV网站| 欧美丁香婷婷五月天| 欧洲区自拍| 天天爽天天| 婷婷激情人妻| 99色色网| www 五月天 com| 综合久久狠狠| 思思久久精品| www超碰| 五月香婷婷| 五月天婷五月天综合网在线观| 亚洲爆乳无码精品AAA片蜜桃 | 婷五月天六| 狠狠色噜噜狠狠| 成人电影一区| 久久大香蕉丁香| 情趣视频66| 98永久精品| 五月色综合| 狠狠色官网| 99riAV成人在线视频| 99热这里只有精品66| 五月天婷婷情色| 丁香婷婷久久| 色五月色五天色情网| 人妻五月天激情开心网| 色五月激情五月天| 日韩精品无码99| www.99热在线| 8090在线影视少妇| 精品久久这里热66| 99热无码精品| 狠狠色婷婷7777久综合| 九月丁香| 色色色热热热| 2025中文在线视频字幕免费观看| 婷婷久久五月天中文字幕在线观看| 狼友视频在线观看18| 九九视频这里只有精品在线播放 | 在线另类| 9有码中文| 五月色无码| 日韩国产在线免费观看| 99网| 久色网址| 97婷婷五月天| 免费视频舔| 九九久久玖玖爱| 五月婷婷性爱| 日本色狠狠| 久久婷婷六月天| 日本欧美999久久久三级片| 亚洲欧美综合7777色婷婷| 操逼福利视频| 丁香五月自拍| 欧美色偷拍| 欧美丰满熟妇BBB久久久| 丁香五月社区| 99精品网站| 99日本精品视频热| 丁香五月婷婷婷桃花影院| www久久99| 天天干,夜夜爽| 色丁香综合影院| 色噜噜狠狠色综合网| 色日本颜射| 九九aV| 天天干天天干天天干天天干天| 婷婷五月天堂网| 超碰9在| 丰满少妇猛烈A片免费看观看 | 久久综合激情婷婷激情| 色狠狠伊人久久五月丁香| 91九色小视频| 激情图片99| 成人国产网| 噼里啪啦完整版中文在线观看| 色五月色图| 五月丁香淫淫婷婷婷| 五月丁香五月激情综合色综合| 丁香激情久久| 激情综合色图| 日韩精品成人在线| 99re青青草| 久久九九99视频| 丰满少妇猛烈A片免费看观看| 99日在线视频| 另类图片激情五月| 色婷六月| 99精品久久久久| 六月激情婷婷| 亚洲热视频在线| 婷婷五月深爱五月| 丁香美女主播视频在线观看 | 五月天婷婷色| 色丁香五月婷婷| 99爱在线视频| 日本综合久久| 久久久婷| 欧美性色A片免费免费观看的 | 色婷婷亚洲综合av| 久久婷婷电影| 综合色婷婷| 激情婷婷黄色五月| 亚洲欧洲一二| 婷婷丁香视频| 另类 在线| 大香蕉Av在线| 影音先锋噜一噜| 久操综合| 99热综合在线| 丁香月五月天婷婷久久| 激情合网婷婷| 五月停停丁香| 天天五月天综合网址| 激情五月天无人视频在线| 欧美日韩aaaa| 久久天天| 丁香婷婷啪啪| 综合色播| 亚洲成人AV电影在线| 久久44| 丁香八月综合激情| 97碰人人操| a九九热www| 四色永久成人网站| 五月丁香少妇A| 狠狠五月天婷婷激情网。| 五月婷婷福利| 五月天婷婷AV| 久热免费| 丁香婷婷五月份| 色亭亭九月| 久久91久久91色欲精品| 国产超碰在线| 99成人无码| 五月综合激情视频在线| 91超碰人人操| 内射在线CHINESE| 亚洲av电影网站| www.99免费视频| 婷婷的99视频网站| 五月婷人妻| 欧美婷婷色五月| 久久久人妻| 26uuu成人网| 99久| 五月婷婷99热| 六月丁香婷婷色69| 精品99在线| 99久久久久| 情色五月天 网站| 97婷婷丁香| 99re热| 《战争与艾拉》完整版| 亚洲av网站| 天天天天天操| 超碰人人99| 久99| 久久艹网| 丁香六月婷婷综合激情欧美 | 久久久99精品免费观看| 国产综合丁香五月天| 亚洲成人综合在线| 俺也高清无码高清视频| 五月丁香六月成人| 亚洲啪啪自拍| 另类的婷婷| 久久偷拍综合五月天| 色婷婷久久| JlZZJlZZ8JlZZ亚洲熟女| 婷婷97碰碰| 五月婷六月丁| 色五月欧美| 婷婷五月a| 色婷婷91激情小说| 久久99精品久久久久久三级| 久久婷婷七月丁香| 99色婷婷| 五月天综合网| 99热这里只有精品22| 五月天伊人网| 丁香五月婷婷大香蕉| 亚洲色婷婷婷婷人人爽| 狠狠色噜噜狠狠狠狠综合| 久久五月天激情| 91蜜桃婷婷狠狠久久综合9色| 五月婷婷自拍视频| 涩涩五月天| 久久伦乱| 日欧大屏操| 97色色色色色| 激情五月综合网最新| 香蕉人妻AV久久久久天天| 亚洲欧美另类在线23p| 久久996re热这里只有精品无码| 五月丁香啪啪| 9久9久9久女女女九九九一九| 婷婷五月丁香av网站| 亚洲婷婷五月天| 婷婷干| 久久er这里只有精品| 亚洲成人乱码av网站| 婷婷五月天成人网| 婷婷色五月激情| 色婷五月天综合网| 婷婷五月丁香六月| 99热传媒| 第六色在线| 99精品在线播放| 色99视频| 成人在线不卡| 色碰碰| 日日夜夜婷婷| 色护士综合| 青青草原福利在线| 亚洲无码影音| 日韩综合大黄| 超碰成人公开| 五月婷婷精品视频| 色五月丁香com| 色播播之激情五月婷婷| 国产做爰视频免费播放| 中文字幕+乱码+中文字幕在线观看| 五月天啪啪| 婷婷香蕉| 亭亭玉月丁香| 欧美激情五月天婷婷| 99久久9| 思思99热这里只有精品| 99热这里只有精品8| 婷婷 久综合| 97操操| 五月婷婷和六月| 欧美色男人网站| 开心婷婷中文字幕| 久9精品| 91丨九色丨熟女|新版| 另类国产区| 五月婷婷导航| 激情黄色小说色五月| 丁香五月手机在线| 色婷婷成人| 久久性爱视频| 先锋资源 996| 久久婷婷综合基地| 午夜无码精品色综合久久| 中文成人在线| 丁香五月天成人| 97超碰色| 四色五月婷婷| 久久精品噜噜噜成人A∨色欲| AV九九| 99热骚货| 色色五月天婷婷| 日韩无码专区| 午夜九九电影| 五月天色色色网| 国产永久一二一起草| 久热网站| 77799热| 97av在线视频| 亚洲激情电影五月天色婷婷丁香一起草| 99国产精品白浆在线观看免费| 思思热再线视频| 97婷婷五月激情六月丁香伊人| 丁香六月激情四射| 久久婷婷丁香五月一二三| 日韩少妇内射免费播放| 狠狠做婷婷| 久九色| 日本欧美成人片AAAA| 六月丁香社区| 啊V视频在线观看| 高清一区二区三区日本久| 色婷婷色和| 国产毛片精品一区二区色欲黄A片| 人妻久久做| 丁香欧美| 亚洲综合在线播放| 777精品久无码人妻蜜桃| 国语精品探花| 色五月91| 91午夜婷婷狠狠久久综合9色| 五月开心网| 99色啊| 大香蕉娱乐| 日本欧美成人片AAAA| 天天舔天天摸视频| 99久久9| 九九色婷婷Av| 久久免费精彩视频| 日本熟女二区| 天天弄天天爽| 97碰碰碰免费公开在线视频| 五月婷护士| 91丨九色丨熟女|新版| 婷婷五月天激情小说| 色.五月综合网| 黄网免费看| 中文不卡一二区| 久操大香蕉| 69久久久| 极品少妇XXXX精品少妇偷拍| 中文在线成人| 天天天摸夜夜夜玩| 天天搞夜夜爽夜夜爽| www99xxxx五月丁| 五月婷丁香| 五月婷婷亚洲| 五月色丁香视频精品| 婷丁香久综合| 婷婷射丁香| 丁香五月天婷婷大香蕉| 99热色精品| 六月婷久久| 99色色色色| 五月丁香六月婷婷不卡免费无码 | 婷婷激情人妻| 夜丁香综合| 很很干在线视频| www.久久爱| 丁香久月| 成人无码中文| 激情五月天。| 婷婷色情 | 欧美日综合| 久久久久久久97| 丁香六月婷婷色播| 五月亭亭直播| www激情com| 五月天激情无码高清 | 欧美综合激情五月| 激情综合色五月六月婷婷| 久久免费精品小视频| 伊人玖玖网| 99ri视频在线观看| 九色综合五月天婷五月| 婷婷无五月无码视频| 免费无码毛片一区二区A片| 亚洲综合色色色| 婷婷五月丁香综合| 久9久成人精品视频| 色99在线观看| 久久综合五月天| 五月天天视频| 殴美综合激情五月天免费视频| 停停五月丁香| 五月丁香六月婷婷色日| 婷婷五月婷婷| 五夜丁香| AV在线免费网站| 美女激情综合| 91久久| 超碰在线99| 天天日天天色| 乱岳熟女50岁| 色综啪啪网| 99热每日| 综合 蜜月 婷婷| www91久久| 日本九九视频| 色色色综合网| 亚州激情在线视频| 五月丁香婷婷啪啪综合网| 丁香五月,激情五月,深爱五月| www国产亚洲色婷婷com| 婷婷五月花西瓜| 99视频这里有精品| 丁香六月久久| 国产激情视频在线观看| 成人做爰黄A片免费看直播室男男| 亚洲字幕AV一区二区三区四区| 国产一区二区av免费| 国产乱轮一区二区三区| 第1影院之五月婷婷| 久久98热re| 深爱激情中文五月天av| 色日本丁香婷婷| 夜夜撸天天日| 色婷婷综合影院| 色色色无码| 国产FREESEXVIDEOS性中国 | 97五月综合网| 噜噜噜狠狠色综合| 五月婷综合性中心| 婷婷六月丁香欧美视频在线| 99福利导航| 婷婷久久综合| 伊人久久大香| 99热都是精品| 99色色最新视频| 亚洲婷婷免费| 思思精品视频| 亚洲日韩成人三级av| 97婷婷狠狠久久综合9色| 婷婷激情五月综合| 丁香五月网在线观看| 婷婷色综合av| 九九综合| 欧美在线视频9| 人妻狠狠操| 丁香六月激情网C0W| 综合AV在线| 日日操夜夜擼| 91啪啪网| 狠狠操天天日| 99欧州偷拍视频| www。久久久久一b。Cc| 国内一级精品| 成人婷婷五月| 婷婷五月激情图片| 久久性爱网| 九九99九九99九九99视频网| 好好干av| www.yw尤物| 色婷婷色丁香色欲av| 久久婷婷亚洲| 狠狠色噜噜| 丁香六月天| 99性视频| 99综合自拍| 久99久热只有精品国产99| 亚洲va综合va国产va中文| 欧美激情五月天| 六月色婷婷综合影视| 九九家庭影院| 五月丁香六月激情在线| 日欧一片内射VA在线影院| 亚洲成人精品三区| 噜噜噜噜婷婷五月天| 六月婷婷在线视频| 99欧美| 五月丁香琪琪| 伊人9999| 99噜噜噜在线播放| 亚洲一区二区色图-亚洲精品国产精品乱码-成人AV | 亚洲日韩成人三级av| 极品色丁香| 这里只有精彩亚洲视频推荐| 色五月婷婷五月天| 五月天婷婷亚洲| 婷婷九月丁香久久| 亚洲免费婷婷| 亚洲免费av在线| 久久婷婷五月丁香| 狠狠色色| 久久五月综合| 亚洲色五月婷婷| 碰超亚洲| 99惹| 99热这里只有精品2| 2015WWW永久免费观看播放| 婷婷五月天,影院| 激情丁香五月婷婷| 九九亚洲无码| 99精品亚洲| 东京热五月婷婷| 五月丁香成人日| 26uuu精品一区二区| 色婷婷情片| 六月综合在线| 刘玥av在线| 色五月丁香一区在线| 五月婷婷影院| 最新色色五月天| 五月婷婷色播| 色婷婷在线视频| 欧美日韩中国| 日本va欧美va欧美| 96自拍视频九色在线观看| 婷婷97狠狠干| 99热这里有精力| 久激情网| 亚欧州精品视频| www.maotanji.com| 99热这里只有精品青草| 99热大| 丁香五月天成人网站| 欧美日韩成人h| 婷婷五月天成人网站| 中文字幕日本最新乱码视频| 天天插天天很| 秋霞少妇AV网站| 九热在线这里有精品6| 日本一级黄色电影| 婷婷第六色| 免费看欧美成人A片无码| 色爱99| 香蕉久久国产AV一区二区| 丁香婷婷六月激情文学 | 亚洲五月婷天天操| 成人超碰网| 色色色色色色色色色999| 婷婷中合| 99精色| 色黄啪啪| 激情爱爱网站| 五月婷婷激情性爱| 高清无码视频网址| 人人操Av| 精品成人无码A片观看香草视频| 激情综合网,婷婷五月天| 国色天香成人网| 天天综合网亚洲综合网| 中文字幕在线不卡视频| 五月性色| 五月婷婷基地| 色色色999| 西瓜美女a片| 久久久色情| 亚洲国产精品VA在线看黑人| a毛片二逼wwwwwwwwww| AV九九| 99玖玖在线视频| 人妻视频在线| 五月天色五月| 激情黄色五月天| 久久婷婷桃花五月天| 伊人玖玖精品| 中文字幕在线日亚州9| 五月婷婷综合在线| 插插插色综合网| 亚洲精品另类| 亚洲精品视频在线播放| 激情五月开心五月在线视频| 开心色色五月天综合| 99热中文字幕久久| 欧美97色| 国产伦亲子伦亲子视频观看| 久久性爱视频久久性爱视频| 五月天婷婷基地综合网| 99爱视频免费| 性99网站| 色综合网址| 国产肥白大熟妇BBBB视频| www,av好吊操| 任你擦免费视频| 99热这里都是精品| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | 91九色国产熟女| 夜夜骑日日操| 九九激情视频| 丁香五月Av| 丁香婷婷在线| 色99自拍| 91丁香综合| 涩综合网| 九九九午夜影院成人| 六月婷婷综合久久| 色欧美一级| 日本丁香五月| 六月婷五月丁香| 激情AV中文| 熟女人妻一区二区三区免费看| 欧美综合激情丁香五月六月婷| 久久综合婷婷| 极品少妇婷婷五月| 秋霞丝袜啪啪啪| 深爱激情六月天| 国产高清视频91九九九久久久| 色婷婷中文在线| 五月天婷婷六月| 4399人妻无码久久久| 激情九月婷婷九月| 亲子乱AV一区二区三区下载| 婷婷激情五月综合丁香社| 97人人做| 99久热在线精品99re6热| 99热8| 婷婷激情五月综合| 97涩涩丁香五月天| 久久伊人大香蕉| 9热成人在线视频| 99精品视频在线观看| 182TV大香蕉| 呦呦视频无码播放| 色五月xxx| 丁香五月天婷婷91| 97luluse| 色婷婷影院| 99热在线观看| 久久这里只| 午夜精品777| 久99久视频| 91chinese 在线| www.9色色色| 成人做爰A片免费看视频| 久久婷五月| 美女激情婷婷| peg 2区三区四区的| 四虎成人精品永久免费AV九九| www.金莲av| 精品一二三区久久AAA片 | 热久久77777| 婷婷永久在线| 日韩成人电影在线播放| 亚洲一二三网| 又大又粗九一在线| 婷婷伊人综合中文字幕| 激情图片五月天| 俺也高清无码高清视频| 五月婷高清视频| 丁香婷婷五月天校园春色| 97九色| 日韩av网站在线观看| 色开心五月婷婷丁香HD| 亚洲一区二区色图-亚洲精品国产精品乱码-成人AV | 五五月丁香花激情综合网| 97碰| 国产视频福利| 国产精品国产| 一区中文字幕电影| 婷婷伊人綜合中文| 大香蕉久久久久久久久| 激情综合丁香六| 色色欧美。| 成人五月丁香花| 极品少妇XXXX精品少妇偷拍| 日本久久网| 天天色天天爱天天爽| 99在线观看精彩视频| 人人玩人人橾| 激情无码五月天| 色婷婷手机在线| 99国产er热视频| 888精品福利地址| 五月天日日操夜夜操 | 色情五月天小说| 欧美婷婷六月丁香综合色| aaaaa黄色| 久久黄A片| 无码一区二区日韩| 男人天堂亚洲综合| 婷婷操逼| xxxx五月| 久久这里只有精品网| 99久久亚洲精品视频| 樱花99视频| 5月婷婷六月丁香| 韩国婷婷丁香五月| 六月婷婷久久大全| 五月婷婷激情网| 丁香六月色婷婷| 色九九九九| 丁香五月天啪啪| 色婷婷天堂| 99热这里只| 99精品成人无码A片观看金桔| 国产午夜精品一区二区三区四区| 精品久久久久成人码免费动漫| 99热超碰人| 江苏少妇性BBB搡BBB爽爽爽| 97午夜一区二区| 9婷婷内射| 大香婷婷| 在线中文字幕视频| 青青热久精品视频在线观看| 久久婷婷色| 就99这里只有精品| 97婷婷五月| 婷婷色5月激情网| 五月天伊人综合| www九九热| 九九草草逼| 五月婷婷六月丁香玖玖玫瑰91| 九九99免费视频| caopeng97日韩| 婷婷五月天干干| 久久婷婷五月天激情四射| 婷婷五月影院| 超碰日韩成人| 丁香五月777| 夜夜操夜夜爽| 丁香婷婷六月在线资源观看| 五月丁香亭亭操逼| 粉嫩AV久久一区二区三区| 亚洲AV无码成人电影| 色拍九九九| 六月丁香啪啪啪| 五月丁香婷婷激情| 激情av在线| 久久久久9999| 激情婷| 婷婷在线观看五月天在线视频| 久热这里只有精品在线| 热99在线精品| 99ER热精品视频| 丁香六月婷婷综合欧美| 五月丁香爱婷婷深深| 中文乱子伦视频| 九九热最新| 五月激情综合婷婷| 操碰97| 丁香五月电影| 婷婷五月丁香基地| 风流少妇A片一区二区蜜桃| 亚洲蜜乳AV| 亭亭丁香久久五月| 五月婷婷在线播放| 日日爽日日| 大香伊人婷婷| 五月熟妇婷婷久久| 综激情网| 琪琪色五月婷婷老师| 婷婷色中文字幕| 婷婷精品性视频| 亚洲va成人va成人va在线观看| 97在线视频 欧美| 色婷婷丁香五月天在线视频| 久久五月天色婷婷| 国产av一区二区三区| 五月色婷| 人人干av| 天天日天天色| Av九九| 色五月激情五月天| 九九精品99| 中文在线视频久9| 色久五月| 日日撸夜夜操| 在线超碰91| 性天天中文网| 午夜精品人妻无码一区二区三区| 超碰资源在线| 日日日天天干| www。久久久久一b。Cc| 99综合视频在线| 99综合网| 午夜激情久久| 婷婷综合网站| 婷婷五月天av| 国产综合婷婷| www.色五月| 色九月婷婷| aaa久久| Av免费网站在线| 五月天快乐开心激情网| 91人人操人人| 大香蕉伊人爱在线| 五月丁香花激情综合网| AA片在线观看视频在线播放 | 激情五月综合六月丁香婷婷狠狠干| 996er热| 久操干| 婷婷丁香色五月| 激情综合视频| 天天狠狠色噜噜| 中文幕无线码中文字蜜桃| 久久综合激情| 一起草Av| 97婷婷狠狠| 久久婷婷视频| 毛v一区二区视频| 婷婷色五月丁香六月欧美啪| 九九色婷婷Av| 久热这里只有精品视频6| 无码激情AAAAA片-区区| 日本va欧美va精品发布视频| 激情小说婷婷| 色激情综合| 久久久久久久97| 久久狼人天堂| 五月天停婷基地| 婷婷五月天中文字幕| 五月丁香婷婷欧美| 丁香五月综合久久| 婷婷射丁香| 成人网站高清无码| www夜夜| 伊人网啪啪| 五月婷婷六月丁香在线| 激情五月天色婷婷综合| 97色色综合| 五月色丁香婷婷综合| 五月天开心婷婷激情网站| 丁香五月综合无码趴趴| 99热精品在线观看| av无码电影| 91男同| 色婷婷五月天中文字幕| 丁香五月久久| 99热这里只有精品国产免费| 国产成人一区二区三区在线观看| 五月天小说激情| 五月天婷婷Av| 日本丁香五月| 99热主页日本| 超碰成人电影| 激情综合五月| 久这里只有精品| 婷婷最新地址| 色色色色色综合| 色婷婷在线影院| 婷婷五月电影院| 亚洲中文丁香| 国产成人精品一区二三区熟女在线| 插插插色综合网| 四虎99热在线观看网站| 丁香五月色综合色播五月| 激情五月天婷婷色色色色色色色色色色色 | 综合性爱网| 九九99免费视频| 99热99ai| 婷婷最新地址| 久热免费| 亚洲最大在线| 99热免费| 99热这里只有精品2| 最新av在线观看| 狠狠搞狠狠操| 新激情五月天色播| 九九精品热播| 色啪网| 天天干天天干天天干天天干天天干天天干天天 | yw国产AV| 日韩 中文 欧美| 亚洲精品操一操、噜一噜、摸一摸、爽| 婷婷丁香红五月91C| 婷婷色正月| 色色五月婷| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 久久精品99国产精品日本| 婷婷五月骚厕所| av在线播放网站| 亚洲无码yw| 丁香六月视频| 丁香六月| 国产亚洲精品久久久久久郑州| 婷婷五月天激情亚洲小说| 欧美性久| 激情内射人妻1区2区3区| 五月天久久综合婷婷| 国产 码在线成人网站| 日操夜操天天操不卡| 色婷婷在线播放| 久久性爱视频久久性爱视频| 9热精品| 1024在线一区|