色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

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

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

Delphi直連MySQL:libmysql.dll原生調(diào)用實戰(zhàn)指南 簡介本資源是面向Delphi中高級開發(fā)者的技術(shù)實踐包聚焦于繞過OLE DB、直接調(diào)用MySQL原生客戶端庫mysql.dll實現(xiàn)數(shù)據(jù)庫連接與操作的核心方案。適用于需提升數(shù)據(jù)庫訪問性能、規(guī)避Windows平臺中間層依賴、或定制輕量級數(shù)據(jù)訪問層的桌面應(yīng)用開發(fā)場景。壓縮包共53個文件含6個關(guān)鍵Pas單元如mysql.pas封裝DLL接口、4個DPR主程序覆蓋不同Delphi版本、4個DFM界面文件、32個HTML字符集文檔詳述cp1251、latin1、utf8等編碼適配方案以及ThreadDemo多線程安全示例和StmtDemo預(yù)編譯語句實踐整體僅87KB結(jié)構(gòu)緊湊、即拿即用。已有432人學(xué)習(xí)下載讀者可直接獲取完整可運行的Delphi工程、跨編碼環(huán)境的字符集處理范例、線程安全連接管理邏輯以及mysql_win32.inc等平臺適配頭文件快速掌握原生API集成要點與典型錯誤規(guī)避方法。1. Delphi 直連 MySQL繞過 OLE DB 的mysql.dll原生調(diào)用方案為什么老項目還在用它你手頭有個運行十年的 Delphi 7 工業(yè)監(jiān)控系統(tǒng)數(shù)據(jù)庫從 Access 換成了 MySQL但老板明確說「不準(zhǔn)裝任何額外服務(wù)不準(zhǔn)改架構(gòu)更不準(zhǔn)碰 OLE DB 或 ADO——那玩意兒在工控機(jī)上一啟動就藍(lán)屏」。這時候mysql.dll就不是懷舊彩蛋而是救命稻草。它不依賴 COM、不注冊組件、不走 Windows 數(shù)據(jù)訪問層UDA直接通過 C API 調(diào)用 MySQL 客戶端庫把 Delphi 的THandle和PAnsiChar硬焊進(jìn) TCP 連接握手流程里。這不是“推薦方案”而是某些嵌入式環(huán)境、老舊 WinXP 設(shè)備、無管理員權(quán)限產(chǎn)線終端上唯一能跑通的路徑。它適合三類人維護(hù)存量 Delphi 6–2007 項目的工程師、需要零依賴部署的現(xiàn)場實施人員以及正在逆向分析某套閉源設(shè)備通信協(xié)議的調(diào)試者。別指望它支持 JSON 字段或窗口函數(shù)——它的價值不在新而在穩(wěn)一個.dll文件 三行LoadLibrary調(diào)用就能讓TQuery外掛的 SQL 在 MySQL 8.0 上吐出第一行數(shù)據(jù)。2.mysql.dll的選型邏輯與 Delphi 端綁定機(jī)制為什么必須用libmysql.dll而非mysqlclient.dll2.1 為什么是libmysql.dll不是mysqlclient.dll也不是libmariadb.dllDelphi 原生不提供 MySQL 驅(qū)動所有直連方案都依賴 MySQL 官方 C 客戶端庫。但注意MySQL 5.7 官方分發(fā)包中已棄用mysqlclient.dll統(tǒng)一為libmysql.dllWindows 下或libmysqlclient.soLinux。而libmariadb.dll雖然 ABI 兼容但存在兩個硬傷一是 MariaDB 10.3 默認(rèn)關(guān)閉CLIENT_PROTOCOL_41標(biāo)志導(dǎo)致 Delphi 的mysql_real_connect()調(diào)用返回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%。結(jié)論必須鎖定 MySQL 官方libmysql.dll且版本需與目標(biāo) MySQL 服務(wù)端主版本號一致5.7.x 對 5.7.x8.0.x 對 8.0.x。2.2 Delphi 端動態(tài)加載機(jī)制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; // 關(guān)鍵必須按 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導(dǎo)出表中mysql_init實際導(dǎo)出名為mysql_server_init兼容舊版但mysql_real_connect仍為原名。若GetLastError返回ERROR_PROC_NOT_FOUND請用dumpbin /exports libmysql.dll確認(rèn)真實符號名。2.3 初始化與連接mysql_init的隱藏陷阱與字符集強(qiáng)制設(shè)置mysql_init()返回的PMySQL指針不能直接用于mysql_real_connect()——它只是句柄容器必須先調(diào)用mysql_options()設(shè)置關(guān)鍵選項否則中文字段會亂碼、長連接會超時斷開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; // 必須設(shè)置否則默認(rèn) latin1中文全變問號 MySQL.mysql_options(mysql, MYSQL_SET_CHARSET_NAME, PAnsiChar(utf8mb4)); // 必須設(shè)置否則 Windows 下 DNS 解析超時長達(dá) 30 秒 MySQL.mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, Pointer(5)); // 必須設(shè)置防止大結(jié)果集導(dǎo)致內(nèi)存溢出Delphi 7 默認(rèn)堆棧小 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用;分隔對批量導(dǎo)入至關(guān)重要MYSQL_SET_CHARSET_NAME的值必須是utf8mb4非utf8否則 emoji 和四字節(jié) UTF-8 字符存不進(jìn)去。3. 查詢執(zhí)行與結(jié)果集解析從mysql_store_result()到PAnsiChar字段提取的完整鏈路3.1 同步查詢執(zhí)行mysql_query()的返回值語義與錯誤捕獲mysql_query()成功返回0失敗返回非零值如-1但不能僅靠返回值判斷成功——它不拋異常也不清空上一次錯誤。必須在每次調(diào)用后立即檢查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 表示權(quán)限拒絕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無結(jié)果集但mysql_affected_rows()仍可獲取影響行數(shù)。這是初學(xué)者最常踩的坑以為沒返回結(jié)果就是失敗。3.2 結(jié)果集獲取mysql_store_result()與mysql_use_result()的抉擇Delphi 場景下必須用mysql_store_result()。原因有三mysql_use_result()是流式讀取要求客戶端持續(xù)調(diào)用mysql_fetch_row()直到返回nil期間不能執(zhí)行其他查詢——這與 Delphi 的TDataSet架構(gòu)沖突mysql_use_result()在網(wǎng)絡(luò)中斷時無法重試而mysql_store_result()將全部結(jié)果緩存在內(nèi)存后續(xù)解析完全離線Delphi 7 的AnsiString內(nèi)存管理與mysql_use_result()的內(nèi)部緩沖區(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 語句無結(jié)果集 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;關(guān)鍵細(xì)節(jié)row^[i]是PAnsiChar直接轉(zhuǎn)string會觸發(fā) Delphi 的 ANSI→Unicode 轉(zhuǎn)換。若數(shù)據(jù)庫字段為latin1必須用RawByteString保持原始字節(jié)否則中文變亂碼。3.3 字段元數(shù)據(jù)解析mysql_fetch_fields()提取列名與類型僅靠mysql_fetch_row()無法知道哪一列是INT、哪一列是DATETIME。必須調(diào)用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;類型映射表關(guān)鍵字段fields^[i].type_值對應(yīng) MySQL 類型Delphi 推薦轉(zhuǎn)換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 服務(wù)端不匹配或CLIENT_PROTOCOL_41未啟用。MySQL 5.7 強(qiáng)制要求協(xié)議 41而 Delphi 7 默認(rèn)不設(shè)此標(biāo)志。解決確認(rèn)libmysql.dll來自 MySQL 官方 ZIP 包非 MSI 安裝版并在mysql_real_connect()的clientflag參數(shù)中顯式添加CLIENT_PROTOCOL_41。4.2 現(xiàn)象中文字段顯示為????但 Navicat 查看正常原因未在mysql_init()后調(diào)用mysql_options(..., MYSQL_SET_CHARSET_NAME, utf8mb4)或 Delphi 字符串轉(zhuǎn)換時用了UTF8Encode()而非AnsiString()。解決在ConnectToMySQL()中強(qiáng)制設(shè)置字符集并確保所有 SQL 字符串傳入前轉(zhuǎn)為AnsiStringPAnsiChar(AnsiString(SQL))。4.3 現(xiàn)象執(zhí)行SELECT * FROM huge_table時程序假死任務(wù)管理器顯示內(nèi)存飆升原因mysql_store_result()將整張表加載到內(nèi)存而 Delphi 7 默認(rèn)堆棧僅 1MB大結(jié)果集觸發(fā)堆溢出。解決在mysql_options()中設(shè)置MYSQL_OPT_READ_TIMEOUT和MYSQL_OPT_WRITE_TIMEOUT限制單次操作時長并改用分頁查詢SELECT * FROM t LIMIT 0,1000。4.4 現(xiàn)象mysql_fetch_row()返回的row^[i]指向非法內(nèi)存Access Violation原因mysql_store_result()返回nil如執(zhí)行了INSERT但代碼仍嘗試mysql_fetch_row()或mysql_free_result()被提前調(diào)用結(jié)果集已被釋放。解決每次mysql_fetch_row()前加Assigned(result)檢查mysql_free_result()必須在所有mysql_fetch_row()循環(huán)結(jié)束后調(diào)用且只能調(diào)用一次。4.5 現(xiàn)象程序退出時崩潰調(diào)用棧指向FreeLibrary()原因libmysql.dll內(nèi)部使用了靜態(tài) TLS線程局部存儲而 Delphi 7 的FreeLibrary()未正確清理 TLS 槽位。解決永不調(diào)用FreeLibrary(MySQL.Handle)。將libmysql.dll生命周期綁定到進(jìn)程——程序啟動時LoadLibrary退出時讓 OS 自動卸載。實測強(qiáng)行FreeLibrary在 WinXP SP3 下 100% 觸發(fā) AV。5. 連接池與長連接保活在無TADOConnection的世界里維持穩(wěn)定心跳5.1 為什么 Delphi 原生沒有連接池TDatabase的致命缺陷Delphi 7 的TDatabase組件底層仍走 BDE 或 ODBC無法接管libmysql.dll的裸指針。而手動實現(xiàn)連接池必須解決三個問題連接復(fù)用避免每次查詢都mysql_init()→mysql_real_connect()→mysql_close()TCP 握手開銷太大失效檢測MySQL 的wait_timeout默認(rèn) 28800 秒會讓空閑連接被服務(wù)端主動斷開下次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包服務(wù)端響應(yīng)OK包不消耗查詢配額。比SELECT 1更輕量且不會因慢查詢?nèi)罩緷M而失敗。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;關(guān)鍵設(shè)計BorrowConnection()不阻塞無連接時返回nil由業(yè)務(wù)層決定重試或報錯ReturnConnection()僅更新時間戳不驗證連接狀態(tài)——驗證交給后臺CleanupIdle線程CleanupIdle()每 30 秒掃描一次對LastUsed超過FIdleTimeout的連接調(diào)用conn.Free。5.4 生產(chǎn)環(huán)境?;罴记蒻ysql_options()的三個隱藏參數(shù)除了前文提到的超時設(shè)置這三個參數(shù)是工業(yè)現(xiàn)場的“后悔藥”參數(shù)值作用適用場景MYSQL_OPT_RECONNECTPointer(1)連接斷開后自動重連網(wǎng)絡(luò)抖動頻繁的車間 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()使用。單純開啟它當(dāng)連接因wait_timeout斷開后mysql_query()仍會返回錯誤必須手動調(diào)用mysql_ping()觸發(fā)重連。所以我的習(xí)慣是每次mysql_query()前先if not mysql_ping() then reconnect。6. 從調(diào)試到上線一份可直接粘貼的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 // 不調(diào)用 FreeLibrary —— 交由 OS 卸載 MySQL.Handle : 0; end; end; end.6.2 部署 checklist五項必須核對的落地動作項目檢查方式不通過后果1.libmysql.dll版本匹配用dumpbin /headers libmysql.dll查majorVersion必須等于 MySQL 服務(wù)端SELECT VERSION()的主版本號連接失敗mysql_real_connect()返回nil2.libmysql.dll與 EXE 同目錄將libmysql.dll放在 Delphi 編譯出的.exe同級目錄而非System32LoadLibrary失敗GetLastError1263. MySQL 用戶權(quán)限包含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內(nèi)存分配沖突隨機(jī) AV6.3 最后一條鐵律永遠(yuǎn)在Finalization中清理而不是OnClose我見過太多 Delphi 工程師把mysql_close()放在窗體OnClose事件里結(jié)果用戶點 × 時程序已開始析構(gòu)全局變量MySQL.mysql_close調(diào)用的是野指針。從那以后我每次寫mysql.pas都在finalization段強(qiáng)制加finalization if Assigned(MySQL.Handle) then begin // 不 FreeLibrary但確保所有連接已關(guān)閉 end;并且所有業(yè)務(wù)代碼中mysql_close()只在TMySQLConnection.Destroy中調(diào)用絕不暴露給 UI 層。連接的生命周期必須由對象管理而不是事件驅(qū)動——這是 Delphi 7 直連 MySQL 能活過五年不翻車的底層契約。希望幫到你。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
98人妻精品一区二区色欲| 亚洲丰满很很操| 国产 日韩,欧美 自拍| 97免费视频网| 99热国产| 国产欧美日韩一区二区三区| 日韩欧美亚洲自拍偷拍| 亚洲 欧美综合| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 日日骚一区二区三区| 中文字幕乱碼在线| 啊啊啊97视频| 日本91白丝| 久久人人爽爽人人爽人人片αV| 深夜视频| 亚洲天在线| 视频一区二区免费在线| 夜夜夜夜爽| 日韩99神马视频片| 97精品一二区| 99无码| 日本女优在线视频福利| 强奸乱伦亚洲第一页| 亚洲熟女诱惑| 精品人妻一区二区三区不卡断| 日本最新免费韩国1区2区视频播放| 五月激情小说| 艹比视频国产精品| 精品久久視頻在线| 天天射影院| 国产成人+综合亚洲+天堂| 精品成人亚洲午夜电影| 欧亚在线视频| 国产精品亚洲免费| 大屁股xxxxx| www.av在线视频| 91丨九色丨国产丨人妻在线 | 一区二区三区激情在线观看| 欧美,日韩,亚洲视频| 久久五十路熟女人妻| 很很操在线| 999久久久免费精品国产牛牛| 欧美亚洲特P| 精品女同一区二区三区| 97在线免费观看| 97aiaiai| AV一区观看| 久久精品 六十路 熟女 欧美| 大香蕉中文| 天堂男人网| 91精品国产一区三一| 在线观看啊啊啊啊啊| 久久6热精品99视频| 久久精品一区一起草| 天天日骚逼熟女| 亚洲图片 欧美电影| 亚洲交性| 伊人网青青| 亚洲AV无码乱码| 人人玩人人添人人澡免费| 国产人妖的免费的视频| 午夜久久一区二区无码中出| 久久久久七视频| 日本一片一区| 青青草在线视频美女| 欧美色亚洲色| 成人av毛片在线观看| 欧美大香蕉久| 成人在线视频网| 97二区四区| 天天影视之亚洲综合网| 超碰人妻97| 97精品一区二区视频| 91丨九色丨国产丨人妻在线 | 欧美色图下一页| 91中出在线| 欧美精品三区| 青青草天天亲夜夜操网| 校园春色亚洲欧洲| 人妻熟女一区二区三区视频| 久久久精品无码亚免费| 97资源制服丝袜| 97就爱干| 操啊国产| 亚洲天堂中文字幕无码男同| 亚洲涩涩| www久久国产精品| 女同性恋久久| 一个人在线看的黄色电影网站| 欧美最大综合网| 91免费看一区二区三区| 久久这里都是精品| 色图四区| 色狠狠综合| 夜夜操91744565| 欧美色吧综合| 欧美性生活免费网| 九九久久首页| 东京热双插| 91久久99久久91熟女精品| 日本不卡二三区| 免费视频97| 亚洲一本大道中文字幕无码在线| 97色色色综合网站| 热99这里有精品综合久久 | 伊人久久亚洲色欲综合网站 | 欧美日韩91| 日日干日日操五月天伦理视频| 97公开久久| 欧美v亚洲v综合v国产v妖精| 婷婷国产精品九区| 亚洲视频精选| a在线观看| 欧美色图 人妻| 91人妻人人澡人人爽人人精品| 啪啪综合网| 激情久久日韩精品中文字幕麻豆| 国产成年免费大片黄在线观看| 国产人妻精品久久久一区二区三区 | 激情综合五月| 91九色丨风韵犹存| 人妻天天操天天爽视频免费| 精品免费视频国产一区| 欧美呦呦性爱| 骚熟女吞| 色爱综合网| 中文无线日韩一区| 丁香五月天婷婷姐| av绯色| 99精品丰满人妻| 日本色色视频网站| 天天干夜夜| 国产精品宅男免费| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 国产高清亚洲日韩一区| 殴美牲| 女性91网站| 九九色综合| 99re28在线观看| 国产尹人在线视频免费| 97网色| 美女黄页| 免费一级特黄特色大片在线观看看| 亚洲色图欧美色图制服丝袜| 日韩一区二区三区四区五区| 97综合国产| 日本亚洲vr欧美不卡高清专区| 欧美乱伦专区| 精品无码产区一区二| 黄片直播三级黄片两女一男| 亚洲图片小说欧洲| 亚洲欧美另类图片| 婷婷国产精品九区| 一块操欧美| 日韩美女啪啪一区| 日韩专区久久久| www色色色com| 成人a级高清视频在线观看| 亚洲成人妻日韩在线| 日韩黄色一区二区三区| 香蕉国产精品麻豆亚洲欧美日韩| av东京热男人的天堂| 婷婷久久五月| 精品国产无码中文| 香蕉精品二区二区| 老熟女区| 91 手机在线播放 绯色| 成人97人人超碰人人| 中日韩久久久免费看| 激情网五月天| 国产Aα| 欧美亚洲图片| 天天在线91| 台湾佬激情综合| 日韩欧美成人午夜福利| 99rre在线精品99re8| 九热大香蕉| 综合熟女| 免费精品福利在线观看| 精品人妻中文字幕4399| 夜夜夜夜久久久久| 色香综合天天影视综合 | 欧美激情片一区二区| 亚洲操操操| 激情四射五月天| 六月婷激情福利天堂69| 日韩不卡a级视频专区| 国产无码三级视频在线观看| 97超碰欧美精品| 自拍第一页| 国产精品久久久久久久久久久久久久久久久久 | 日本女人操逼| 人人人人插| 超碰95| 日本熟妇人妻一区二区三区| 人妻蜜桃臀| 在线情色电影 91大 | 日韩亚洲Av人人夜夜澡人人爽| 操国产高清| 日韩有码中文字幕女同性恋| 色区97| 色天天野狼综合社区| 久久精品中文| 操91| 九九热re99re6在线精品| 中国黄色特级精品一区二区三区片| 国产农村妇女精品1区二区| 亚洲影视综合网| 影音先锋国产精品| 亚洲欧洲另类| 91狠| 国产AV天美| 亚洲不卡不卡中文字幕不卡| 久久综合乱子伦国产免费| 激情综合网激情五月天| 开心五月婷婷激情| www鬼畜国产男人的天堂| 婷婷爱五月| 97电影院超碰| 91在线免费观看处女| 亚洲国男人的天堂| caopeng97| 欧美精品成人亚洲| 欧美日韩国第一区| 大香网伊人久久综合网eew| 丁香婷婷激情五月天无毒不卡 | 福利大香蕉| AV色五月天| 久久青娱乐| 欲色综合| 神马久久久久久| 三级日本一区二区三区| 操逼操逼视频操逼| 91人妻PORNY九色大屁股| 韩国久久97| 啊啊啊啊啊操我视频| 美女的肌被草喷水视频| 大香蕉线| 熟女精品va中文字幕| 日本一级性爱| 亚洲国成人情色好看电影| 日日骚精品视频| 综合网亚洲在线| 国产资源中文字幕在线| 综合久| 亚洲熟女乱色| 无码粉嫩白虎一线天b区| 97日韩欧美| 免费?级毛片无码?∨蜜芽试看| 亚洲中文一区二区三区| 偷拍欧美综合| 啊啊啊啊啊好舒服视频| 神马久久午夜| 热99这里只有精品| 久久超碰大香蕉| 亚洲不卡一| 伊人影院日本| 黄片在线免费在线观看| 男人天堂站| 欧美黑人168页欧美黑人167| 亚洲色婷婷久久91| 免费看久久久性性| 少妇三P| 大香蕉狠狠爱| 欧美精品久久久久久久久88| 伊人大香蕉在线| 中文字幕熟女人妻丝袜丝| 久夜视频| 亚洲成av人片色午夜乱码| 青青色综合| 天天躁日日躁狠狠狠躁| 色啪网| 欧美乱妇狂野欧美在线视频| av三级电影在线播放| 久久精品性| 蜜屁Av| 日日爱99| 日本高清电影欧美色图| 青青草大香蕉视频| 亚洲综合中文字幕有码| 91AV天美在线视频| 欧美爱三级日韩久久| 国产11页| 加勒比综合88| 中文字幕黑人大片| 好爽视频在线观看视频 | 中出91视频| 亚洲国产尤物yw在线观看| 国产极品999| 在线欧美亚洲| 狠狠操狠狠| 人妻少妇无码| 九九99精品视频在线观看| 熟妇激情| 国产精品自在自拍视频| 我想要啊 啊 啊| 免费αⅴ在线观看| 日韩无码AB| 亚洲精品白浆高清久久久久久 | 91在线精品一区二区三区| 久久婷婷一区二| 久操免费观看| 91精品成人www| 久久精品一区二区| 亚洲色堂免费视频| 亚洲国产精品成人综合| 婷婷美人网| 一区二区影院| 91天天综合在线观看| 国产成人精品日本视频| 国产AV线| 人人爽夜夜操| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 狠狠久久亚洲欧美专区| 日韩射精| 青青草视频在线观看一区二区| 一区二区乱码福利| 今日头条成人一区二区三区四虎精品| 熟女乱伦A| 加勒比久久av| 熟女人妻久久中文字幕一二区| 亚洲97综| 夜夜人妻爽| 亚洲成熟国产精品美女| 久久久性爱| 欧美日日夜夜| 国精精品无码一二三区水多多| 四虎影视国产精品| 99青草| 亚欧成人综合影院| 欧美se综合| 婷婷色香| 亚洲欧洲综合视频在线| 午夜性刺激视频免费观看| 黄呦呦在线| 国产成人无码高清| 亚洲色婷婷久久91| 99这里都是精品| 亚洲美乱| 国产精品成人蜜臀AV在线| 欧亚 另类 久| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 黄色性爱网网| 欧美一二三级精品在线| 久久久一二三四区| 亚洲在高跟鞋自慰久久在色线| 欧美精品久久久久久久久88| 国产一区二区在线播放量| AV中文字幕三四五| 欧美色图 人妻| 大香蕉碰碰| 久干9操| 大JI巴好深好爽又大又粗视频| 91色综合色| 亚洲AV无码天美传媒一区| 无码最新| 亚欧高清| 国产精品扒开腿做爽爽爽视频| 99re在线视频国产| 久久久婷| 亚洲第一页欧美| 亚洲激情网一二三四区| 精品性爱无码在线播放| 91成人精品在线播放| 天天综合91| 97欧美日韩综合| 亚洲美腿丝袜香蕉影视欧美成人| 亚洲吊色| 天天日天天射天天干| 国产400孕妇孕交群| 久热99999| 97精品97| 男人的天堂在线| 在线综合 亚洲 欧美中文字幕 | 看全色黄大色大片免费视频| 性高潮久久久久久久久久久| 美女网站黄页| 欧洲精品区| 国产精品久久久久久久免牛肉蒲团| 亚洲男人的天堂V| 淫淫总合网| 人妻AV在线| 抽插无码高清一区| 国产 v乱码一区二| 久久久久久午夜男人的天堂| 97超碰碰碰| av中文在线| 狠狠综合| 久久大香蕉手机高清视频| 97天天爽| 97se综合网| 欧亚日韩三区| 91插B网站| 97伊人| 亚洲风情在线观看| 日本爽爽爽爽爽爽免费视频| 欧美中文字幕日韩在线| 乱伦图一区| 蜜乳性色无码专日粉嫩骚逼AV| 黄片免费久久久久久久| 欧美麻豆成人同性GⅤ在线| 91精品无码人妻系列| 九九无码视频| 91蜜臀熟女| 日韩AV中文字幕电影| 国产传媒日本欧美专区| 91在线/欧洲| 亚洲人精品午夜不卡| 亚洲丨在线| 亚洲图片欧美色| 无码直播久久久| 做爱A级亚欧| 日韩成人电影AV| 中文字幕高清20页视频| 日韩资源网| 夜夜久久久| 中文字幕乱码在线| 美中日韩无码| 96AV久久久| 骚货 中文字幕 av| 伊人一级免费黄片| 大香蕉人妻| 国产肏屁眼视频| 欧美男人的天堂| 五月天我淫我色av| 五月综合视频| 人妻黑丝袜电影| 97欧美在线| av强奸乱轮| 夂久色| 国产丝袜高跟美女av免费观看| 九九九免费视频| 亚洲天堂7777| 成人综合网 欧美| 日本三级精品| 综合欧美日韩在线观看| 操美女人妻| 久热最新在线杭州| 伊人五月天激情| 欧美性暴力猛交XXXX| 国产人妻久久精品一区二区三区| 午夜AV人气不卡| 亚洲18禁| 夜夜爽夜夜操| 日韩性爱网址| 亚洲drav色图| 国产成人午夜视频网址| 久久久久久性爱片| 极品肉射| 丁香六月天| 男人的天堂三级| 日韩高清黄片| 91九九九小逼| 久久丁香久草综合网| 日本色婷婷| 九九超碰综合网| 中文字幕一区二区三区高清| 亚洲狼狼干综合1| 91 丝袜在线播放| 欧美78p| 91老司机视频| 91色碰| 懂色av一区二区三区天美传媒| 色情五月丁香| 麻豆视频一区二区| 成人夜夜爽| 欧美日韩97| 国语人妻精彩刺激| 欧美色www亚洲国产阿娇要播| 91 手机在线播放 绯色| 日韩一级欧美一级国产一级台湾| 欧美老熟另类| 日本乱人伦片中文三区| 超硑97精品| 黄色片,com| 久久大陆| 丁香五月自拍| 亚洲全色网| 国产视频三区四区| 色y情视频免费看| 午夜精品久久久久| 日日碰狠狠添天天爽超| 日夜精品| 亚欧美天堂在线| 国产视频一区二区三区在线免费观看 | 操操操操网黑人| 国产啊v在线免费播放| 亚州色阁| 欧美黑人XXXⅩ高潮交| 操一操摸一摸| 日韩中文字幕宗合在线| 美女自卫慰黄网站免费| 欧美不在线| 美女久久久久久久| 96久久精品一二三区色欲| 亚洲欧美91| 色婷婷aV一区二区三区麻豆综合| 国产AV色黄看到爽| 在线看污网站| 超碰 av 女人天堂| 激情综合网五月婷婷| 91亚洲色图| 欧美少妇性乱| 少妇一级无码精品| 日本亚欧爱爱| 国产免费大片| 国产熟女免费观看久久| 亚洲男人天堂2| 久久 国产精品 一区| 日本天天干天天操一区| 第45页一区二区| 高清无码 国产精品| 啊啊啊好大好深| 综合网欧| 亚洲色五月| 草草影院最新网址| 精品国产国产AV| 国产农村一一级特黄毛片| a男人的天堂久久一级A毛片| 国产精品国产| 天天综合网91入口| 伊人五月天| 久久中文字幕一区不卡| 后入国产| 一区超碰一区| 亚洲人在线| 日日干日日| 一区二区视频在线播放| 97视频免费在线观看| 91熟女视频网| 少妇500双飞99| 欧美日韩91| 99热99在线播放激情| 精品久| 天美传媒精品久久视频| 亚洲啪啪啪啪视香蕉| 欧美日韩丝袜| A片 AV一级在线播放观看免费| 久久久久日本视| 亚洲AV无码| 久久精品亚洲成a人天堂| 欧美综合综合| 久久99人妖视频国产| 国产精品久久久 | A级毛片在线看免费| 欧美 色 亚洲| 后入福利视频| A一级色女| 中国熟女网站| 亚州色站 日韩电影| 亚洲国产欧美日韩人妻日中文| 精品一区二区亚洲国产| 国产区91柔拿会所技师| 91c色| 超碰97人人cao| 国产400孕妇孕交群| 91欧美经典| 亚洲男人天堂视频| 福利在线观看一区二区| 精品中文字幕一区二区| 午夜亚洲WWW湿好大| 久久久久少妇| 成人26uuu| 日本成a人v网站在线观看| 亚洲春色一区二区三区| 国产精品久久aV| 操逼操2| 国产家庭乱伦表演| 亚洲国产一区二区入口| 黄色av网站在线播放| 天天草夜夜草高潮片| 国产成人无码啪| 欧美综合娱乐久久| 国产一区二区视频在线播放| 这里有精品| 久久精品国产亚洲AV无码电影| 综合五月婷婷亚洲一区| 高清无码国产亚洲| 日本99久久| 男人天堂.AB| 亚洲综合影片| 亚洲中文电影| 久久久999国产精品| 欧美色图电影| 玖草在线视频| 看一级特黄a大一片| 日本熟女中文| 亚洲熟妇自偷自拍另欧美| 吉田爱美AV在线| 亚洲日韩久久精品一区| 久久9999 | 欧美精品欧美精品系列| 亚洲自拍97| 最新av中文字幕高清| 午夜精品久久久久久久久久蜜桃 | 偷拍色图| 特污精品女优骚货黄色视频在线免费观看| 欧美Ⅴ性爱| 国产一区二区在线电影| 丁香五月天视频| 九九夜精品九九在线| 欧美日韩国产精品久久色婷婷| 日比av无码| 色色色色日本| 大香蕉97久久| 九九九九九九九九九五码| 久久久555| 超碰国产精品无码| 五月色网| 鸥美极品| 日韩熟女无码| 黄色高清无码无码破解免费暗网| 日本不卡码黄色 | 久久精品国产72国产精品福利 | 亚洲 欧美 日韩另类 麻豆| 99re这里只有精品9| 日韩不卡毛片Av免费高清| 国产精品久久久久无码AV会牛| 国产自产91区13区| www亚洲欧美| 日韩精品人妻一| 人人色人人射人人妻| 亚洲精品黄码久久久久| 免费av在线播放二区| 亚洲性爱高潮影院| 综合欧美色图| 日韩中文字幕人妻视频| 草伊人高潮喷水超碰| 精品少妇999| 97人人操人人摸| 久久久影院| 欧美色涩| 91精品啪在线观看国产城中村| 看黑人AV不卡| 亚洲人成在线放东京热| 亚洲色偷偷色噜噜狠狠99网| 色777999综合| 人人天天干干| 中日992视频| 乱伦Av网| 久久华人网| 欧美成人一区二区三区在线播放| 自拍视频大全亚洲专媒视频/一区二区三区 | 综合亚洲情色| 精品日韩人妻视频| 丰满人妻-区二区三区免费| 天天摸天天操视频| 五月天精品| 亚洲脚交| 亚洲丁香花色| 97久久国产| 天天弄天天操| 天天日天天操天天射河南省| 亚洲乱色视频一区、二区在线| 四虎精品一区二区| 熟妇高潮一区二区免费视频| 中文字幕一二三| 婷婷五月天基地| 亚洲资源站| 色婷婷在线视频精品导航| 亚洲国产97| 亚洲天堂另类小说男人| 内射老妇BBWX0C0CK| 久久视网78| 看一级特黄a大一片| 亚洲s色图| 日本三级R| 欧美97爱| 91/欧美| www.亚洲成人一区| 中国的操老妇女| 丁香五月久久| 乱性AV| 怡春苑东京热| 久综合网| 一道α片欧美| 91路www| 日本99久久| 人妻另类 专区 欧美 制服| 黄色小说亚洲| 视频分类 国内精品| 神马久久午夜| 综合久欧洲| 国产精品自产拍在线观看社区| 91 丝袜在线播放| 日本不卡二三区| 欧美强奸乱| 日本不卡五区| 91网站在线播放| 久久女婷| 精品九九国产无码| 春色91| 蜜臀人妻少妇久久在线观看| 人妻-91porn| 天久久久噜噜噜久久国产精品爽爽| 天天综合网~69| 国产高清成人mv在线观看| 96麻豆精品一区二区三区| 五月天婷婷基地| 成人无码在线视频网站| www.91视频网| 久久噜| 天综合网| 大香蕉黄色一区| 亚洲欧洲综合成人av一区| 久艹视频在线| 91性高| 91女网站| 日本一级二级三级网站| 五码视频在线观看| 熟女精品日韩一区二区三区| 久久成人午夜狠狠| 久久久久久中文字幕中文字幕最新| 免费操逼视频下载| 精品中文字幕一区二区| 日韩97P| 熟女少妇一区二区三区| 蜜桃狠狠色伊人亚洲综合 | 国产无马在线| 久久春色| 久久嫩草| 久久成人午夜狠狠| 久噜噜| 伊人青青草久久| 人人摸人人干| 婷婷综合久久| 99精品久久久久久久婷婷蜜桃| 亚洲精品97久久| 青青草色AV| 五十路熟女在线不卡观看一区二区| 午夜精品久久久久| 五月丁香激情综合| 成人乱码一区二区三少妇| 国产成人拍国产亚洲精品| 97色碰| 久久久久久九九九九九| 大干人妻| 欧美同性恋 的搜索结果 - 91n| 屁股久久久久久久久| 伊人久久亚洲中文字幕不卡| 澳门成人网站久国产日韩| 爱爱60秒免费视频| 亚洲国产一区二区三区在线 | 亚洲欧美日韩不卡人妻| 精品九区| 欧美夜夜草视频| 超碰成人人人爽人人爽| 在线αⅴ| 在线观看免费视频国产| 国产三级资源在线观看| 日韩熟女乱伦中出| 亚洲国产成人精品无码专区| 国产兽交视频在线播放| 91视频精品| 国产女同视频在线播放| 超碰在线观看av不卡| 日韩欧美成人综合在线| 国产99久久99热这里只有精品15 | 91原创在线观看| 91逼逼女人91| 男人的天堂2018.| 国产老熟女| 91人妻视频| 国产久久久9999| 亚州操操穴网| 九X超碰| 神马久久69| 99re6国产精品99re在线| 国产伊人自拍| 97超碰天天| 亚洲欧美综合色| 秋霞午夜视频一区二区| 91激情综合| 夜夜精品视频一区二区| 91热| 91色色网站| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 亚洲欧美内射| 国产色图乱伦| 隔壁邻居波多野结衣中文字幕| 欧美日韩性爱操大逼| 欧亚综合一卡二卡中文字幕| 蜜臀精品1区2区| 超碰久久综合| 国产精品免费久久久久久久久久| 93人人操人人| 思思热在线| 大香蕉在线视频重口味毛片在线| 亚洲素人综合| 91精品人| 九九99精品| 狠狠躁天天躁日日躁| 欧美色九九| 波多野结衣之双飞调教在线播放 | 亚洲砖码砖专无区2023| 91女人的网站| 亚洲97网站| 麻豆综合一区av| 乱伦av.com| 很黄很污的免费网站| 精品成人久久久人人亚洲| 资源新线在线天堂| 亚洲福利中文字幕在线| 国产精品suv一区| 国产深喉视频一区二区| 18禁精品网站在线看| 九九无码久久精品视频| 久久三区四区| 国产亚洲日本精品在线| 亚洲精品一区二区三区新线路| 啊啊啊男女| 久久av成人无码免费| 欧美色偷拍| 亚洲黄色| 丁香九月激情| 国产精品久久久久久久久久二区三区| 一区二区乱码福利| 日韩人妻精品久久久久| 国产视频97| 国产真实野战在线视频| 亚洲综合另类欧美久久久| 中文 人妻 制服| 五月婷婷基地| 人妻少妇无码| 377p欧洲日本亚洲大胆| 老熟妇综合| 日韩黄色av中文字幕| 无码一区二区三区四区五区六区七区八区九区十区视频 | 另类欧美色| 午夜大香蕉| 99热在线只有精品| 自拍偷拍 高清无码| 欲射影视| 国产一区在线观看无码AV| 你草精品在线视频| 男啪女色黄无遮挡免费观看| 亚洲美乱| 人人模人人看| 99热欧美| 欧美天天综合网版| 亚洲色图久久成人| 又大又大又大又粗爽高潮观看| 亚洲欧美国产日本一区二区三区| 久久久久久久久国产| 亚洲无吗在线视频| 一区二区三区 丝袜高跟| 97无码视频在线播放| AV高清一区| 日韩操逼HD| 亚洲精品国产熟女久久久| 天天操夜夜操狠很操| 亚洲污污网站| 亚洲欧美国产其他二区| 色路综合| 国模一区二区三区| A级在线视频| 九九自拍伦理| 日B操| 秋霞福利网| 色啪网| 日产操逼| 中文高清一区二区的| 大香蕉乱级| 天天操天天7| 大香樵伊人网| 欧美日韩97| 国产精品久久久777| 国产又大又硬又长又粗| 性91| 久久人妻四季| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 亚洲资源吧| 荡小穴在线观看| 国产一级特黄大片处女| 超碰无码五月97| 一区二区三区四区色图| 1769国内精品视频| 99热99re6国产在线播放| 黄色av一区二区在线| 日韩兔费看黄片| 亚洲国产中文字幕| 亚洲少妇色| 亚洲另类小说卡通动漫| 亚洲天天自拍| 国产成人主播| 亚洲国男人的天堂| 久久精品国产AV一区二区三区| 91精品操美女| 艳尻美人妻| 婷婷啪啪| 日韩成人精品| 人妻欧美| 男女香蕉一区二区| 91天美传媒精品| 秋霞曰韩R级| 大香蕉视频一二三区| 久久久久久久9999| 国产Aα| 深夜国产福利| 人妻精品一区一区三区蜜桃91| 国产白领连续中出在线观看| 综合激情五月天| 久久九色| 久久久久久人| 91国精产品| 精品然女一区二区| 99超碰色| 怡红院一区二区熟女人妻| 欧美性爱18观看| 啊啊啊啊啊啊好多水| 久久久九| 亚州色图欧美| 色女99一级片在线观看| 蜜臀久久一区二区| 97av在线视频| 日韩激情小说一区二区| 亚洲97成人在线观看| 校园春色五月天| 天堂亚洲欧美| 91精品久久久久久久久久| 在线视频一区二区传媒| 色999人与兽| 久久久久久午夜男人的天堂| 久久黄色视频一区二区三区| 亚洲全色网| 日本一二区不卡| 96久久久久| 少妇熟女一区二区三区| 人妻少妇久久| 91 国产丝袜在线播放-百度| 在线情色电影 91大 | 在线观看无码三级少妇| 国产福利电影| 日韩精品一区二区高清 | 久草热制服丝袜在线观看| 一牛影视久久久一区二区三区| 少妇一线天久久久久久| 99热在线观看| 色999人与兽| 99免费在线视频| 激情四射五月天| 艹精品| 乱伦a片视频| 精品亚洲天堂| 欧美亚洲中文| 精品人妻免费观看| gogogo免费高清看中国国语| 国产女人高潮嗷嗷嗷叫小说 | 欧美另类天堂| 91久久久久久久| 欧美日韩亚洲五月天婷婷| 一区| 天天干人妻| 美女淫穴| 久久久性爱视频| 夜夜国产一区| 啊好爽快点-国产一区二区三区撒尿在线-成人AV| 超碰碰碰碰| 九九av| 欧洲中文字幕| 99热日| 黑人性暴力毛片| 久久人妻熟女一区二区| 98人妻精品一区二区色欲| 91亚洲色人| 日本熟女中文| 嗯嗯嗯嗯啊啊啊好紧好大| 超碰国产情侣自拍网| 亚洲色系另类精品国产| 人妻熟女av国产网站| 欧美一区91大爱| 97一区二区蜜臀| 天天影视之亚洲综合网| 天美传媒AV在线播放| 一个国产在线综合网站| 欧美特大黄一级片片免费| 99热啪啪| 91高跟美女在线播放| 久久久78| 成人AV超碰免费在线| 91精品无码久久久久久久| 日韩精品在线观看观看| 激情开心五月天| 美腿丝袜高跟网免费视频免费视频| 日韩人人精品| 欧美色另类| 日本操嫩b网| 伊人天堂在线| 99热国产| 亚洲男人综合| 日韩精品在线观看网站| 欧美色图亚洲色图成人在在线| 中文在线视频| 亚欧无码线免费观看视频| 成人福利视频网| 99精彩视频| 色网1| 国产精品人妻无码久久久互動交流 | 天天日天天干天天操| 老司机老司机午夜影院| 久久a久久| 深爱伊人影院| 自拍偷拍国产欧美日韩韩| 欧美日韩99| 国产精品久久久999| 亚洲无线观看久久| 成人午夜视频免费播放| 熟妇人妻一区二区三区| 91美女精品| Blackedraw视频一区二区| 国产一区二区三区不卡手机在线| 国产后入式在线观看| 一级岛国大片| 97色五月天完| 麻豆成人AV| 精品超碰国产| 日韩丨制服丨中文|在线| 国产白丝av| www.99视频| 久久久草草精品| 精品国产91av一区二区三区| 大香蕉免| 男人综合网| 久操婷婷| 夜夜夜爽www精品视频| 久久肏大逼| 国产精品国产| se吧提供国产乱老熟视频胖女人| 清纯唯美激情四射| 日韩97P| 操操AV电影| 亚州男人天堂| 久久婷婷亚洲| 婷婷五月天色网| 青青草丝袜在线视频| 国产蜜臀在线| 人妻99p| 日韩淫色网| 亚洲国产精品成人无码久久久 | 久久久亚洲Av| 久久超碰亚洲人| 影音先锋日本一区二区| a人欧美综合天堂麻豆| 久久丁香久草综合网| 蜜臀久久99精品久久久久免费观| 亚洲开心网| 亚洲精品丝袜| 九一精品牛牛一区二区| 日韩综合成人免费视频| 欧美伦乱爱| 精品久| 亚洲国产剧情少妇激情| 欧美激情性久久久久久| 高清肉丝中文无码| 一级啊性爱在线视频| 91综合天天看| 强奸乱亚洲| 国内伊人久久久久久网站视频| 中文伊人大香蕉视频| 国产无马在线| 亚洲日韩XXX| 久久久久久国产手机AV| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | juliaann欧美丝袜办公室| 超碰人人草| 91爱剪切久久| 久久天天性久久伊人| 日韩91网| 国产亚洲精品第一最新| 亚州欧美总和| 色色色综合| 26uuu国产亚洲综合| 欧亚揄拍偷拍精品视频| 99热官网| 日韩综合成人免费视频| oumeizonghese,www| 国产超碰| 亚洲 小说 欧美 激情 另类| 天美传媒av在线| 欧美毛片在线网| 波多野结衣被操50分钟免费视频| 色香伊人| 天天色悠悠激情| 韩国成人精品久久久免费看| 国产精品久久久亚洲第一牛牛_在线观看 | 日韩欧美亚洲一区二区三区影院| 神马影院午夜福利久久久| 国产超碰| 黑人精品一区二区在线播放| 中出在线视频| 夜夜操老骚逼视频网站| 综合欧美日本三级| 亚洲男人天堂手机版| 黑丝日韩av丝袜av| 成视频在线观看免费看| 亚洲男人久久综合天堂| 夜夜黄| 美女啊啊啊啊啊啊啊| 特级毛片特黄久久免费看| 久久一区二区三区四区五区| 九九九九精品一区| 天天看天天综合成人网| 超碰成人国产| 国产精品噜噜噜日日日| 亚洲天堂美臀在线| 色呦呦、国产精品| 啪啪啪大香蕉| 色综合av男人天堂| 美国日韩黄片| 久久久免费高清中文视频| 污污污8888| 欧美另类色| 99久热| 久久性爱大全| 亚洲 欧美 偷拍 唯美| 欧美碰碰综合色| 蜜臀一二三区| 强奸熟女一区二区三区| 美女久久久久久久| 一本一道人妻久久一区二区三区| 最新日韩黄片| 日韩免费三级黄片电影| 少妇一区二区三区| 玖玖久久久| 亚洲综合伊人无码久久| 91天天美女| 婷婷九月国产| 午夜天堂精品久久| 久久不卡一区二区| 亚洲综合春色| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 精品无码久久久久久久久果冻糖心| 亚洲综合色图欧美| 亚洲中文字幕久久无码精品| 日韩大香蕉精品在线视频| 日韩欧美偷拍美女视频| 91处女视频在线观看| 97色五月天完| 国产精品天美传媒| 夜夜夜久久| 久久人妻四季| 亚洲人在线| 97资源欧美| 久热伊人| 久久久一区二区三区四曲免费听 | 欧美久久人体| 国产丝袜美腿美女麻豆| 97视频网站在线观看| 91丝袜美女| 日韩99神马视频播放| 白丝少妇一区二区| 久久久99999久网站| 国产精品一级二级在线| 在线观看视频91| 国产免费一区| 日日AAvv| 久久色精品视频在线| 国产精品内射婷婷一级二| 成人97人人超碰人人| 亚洲天堂男人网|