日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满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
返回資訊列表
在线视频亚洲无码| 少妇被c 黄 免费观看| 丰满岳乱妇一区二区三区| 97se综合网| 亚洲一区二区中文字幕| 2023天天操夜夜操| 神马九九九| 亚洲欧美精品一区天堂久久 | 激情熟女12P| 日韩国产十八禁| av网站在线观看了| 99久久精品国产系列| 九九九九欧美| 麻豆 欧美 日韩| 热99这里只有精品| 成人a级高清视频在线观看| 97资源站国产精品| 亚洲一区二区三区久久 亚洲一区二区| site:sinbotex.com| 日本久久久精品电影| 炮色五月| 欧美色婷婷| 亚洲成人无码影院| 三上悠亚在线毛片91| 亚洲国产青青| 91艹逼精品| 国产又黄又猛又粗又爽的网站| 亚欧成人综合影院| 看免费的黄片| 亚洲综合97| 久久国产精品一区二区| AV中文字幕三四五| 韩日自拍| 日韩亚洲97| yiren97| 一级岛国大片| 国产不卡免费在线视频| 精品无码一区二区三区| 欧美黄色大片在线观看| 91久久免费视频互動交流| 最新制服中文第一页| 97久久天天综合色天天综合色电影| 欧洲综合视频| 亚洲天堂色图| 亚洲限制级| 搡老女人老妇女老妇老熟女怎么读| 99色在线视频| 亚洲色图大香| juliaann精品熟女一区| 日本中文字幕高跟| oumeizonghese,www| 大香蕉99热| 玖玖爱综合| 久久综合日韩亚洲欧美| 97欧美精品综合| 婷婷伊人一区| 91视频观看网站| 青娱乐亚洲热| 欧色综合| 99re6在线视频精品免费完整版安卓版| 亚洲资源网| 传媒免费一区二区三区| 蜜臀va69| 国产精品久久久 | 中文字幕av一区二区三区人妻少妇| 亚洲人妻熟妇三十三区| 九九九九九九九九九九九九九九九女| 欧美激色| 国产精品成人AV片免费看网站| 国产精品又黄又猛又粗| 日韩乱伦影音先锋| 丁香成人五月天| 久久五月综合| 亚洲日韩久久精品一区| 97超碰公开| 丰满人妻-区二区三区免费看| 精产品久久| 男人的午夜天堂| 日本性感人妻91| AV和黑人在线播放| 五月婷色| 91丝袜在线视频| www.91视频网| 丝袜美腿制服人妻二区中文字幕| 少妇毛片久久| 伊人96在线| 97精品免费| 日韩亚洲国产视频| 中文字幕少妇色| 丝袜美腿射精91| 玖玖大干人妻| 五月天黄色激情视频| 91碰碰碰| av强奸乱轮| 日本3级一区二区免费| 欧美最婬乱婬爆婬性视频| 丁香五月婷婷基地| 职场同事知名国产国产精品久久欧美日韩| 欧美色图色综合| 日本丝袜人妻内射| 天天看高清麻豆| 亚洲视频精选| 在线欧美69V免费观看视频| 六月婷婷综合| 色香欲天天天天综合色| 亚洲色图图片| 亚洲AV无码久久久国产精品| 欧美伦乱爱| 蜜臀久久久99久久久久 | 日本免费中文一区二区三区四区| 日韩情色AV| 中文字幕1区2区| 人妻偷拍一区二区三区| 花野真衣| 午夜欧美精品久久久| 密乳AV免费观看| 老鸭窝亚洲毛片| 日本 情色 1区2区3区| 91老熟女视频| 中文字幕精品人妻丝袜| 91人妻在线视频| 色五月婷婷久久| 超碰无码五月97| 国产日韩色综合| 黄色二级片网站| 欧色网址| 9久久精品| 人人爽人人精品乱人伦AV| 久操操AV电影| 九九热免费在线国产视频伊人五月| 欧美96交| 五月婷婷激情综合| 老熟女天天操| 超碰人人干| 亚洲极品| 熟女被操视频网址| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 91大胆欧美| 久久女女| 久久激情网| 亚洲男人天堂2016| 国产一区二区a毛片| 禁止观看美女黄| 天天综合网日韩| 99色色网| 国产v亚洲v日韩v欧美v片另类 | 超碰碰小说97| 国产亚州精品美女久久久免费| 天天天天天天天天综合| 人妻人人做人人澡人人爽欧美一区| 大香蕉天天看妹子| 久久无码电影| 91性色| 人人手机欧洲亚洲国产人妻| 人人做,人人操,人人摸| 91AV天美在线视频| 欧美综合区| 亚洲少妇视频| 国产精品视频播放| 精品人妻美妇91job| 国产夫妻性生活视频| 香蕉婷婷| 国产无马在线| 国产欧美另类久久久精品课程| 嗯啊不要啊在线 | 蜜臀一区二区三区在线| 久久久久久久久久久久黄色| 久久‘黄片视频| 东京男人天堂| 精品黑人一区二区| 欧美牲| 亚洲成人精品在线一区| 色综合国产在线观看| 国内三级自拍小视频在线观看 | 美国一区二区三区视频| 精品久久久久成人码免| 欧美熟妇乱码在线一区| 亚洲天堂7777| 久久夜夜| 中文字幕熟女人妻丝袜丝| 99热综合| 中文字幕在线观看视频www| 牛牛AV人人夜夜澡人人爽| 欧美日动态视频| 综合网色| 尤物一级在线免费观看| 少妇熟女1区2区3区| 少妇精品久久久| 婷婷久草一区二区三区| 911粉嫩人妻| se吧提供91精品国产91久久久久久| ...日韩成人一区二区三区字幕| 六月丁香啪啪| 大香网站| 国产AV激情无码久久无码| 午夜男人的天堂| 亚洲性综合| 欧洲亚洲人妻无码高清久久三区四区| 91精品丝袜久久久久久无码人妻| 91搞逼视频| 粉嫩久久久久| 国精综合一二三区影视| 五月婷婷六月天| 国产精品午夜AV完会免费| 精品九九淫乱男| 日韩在线女优天天干| 国产精品一区二区黄片| 成人性爱视频在线看| 亚洲天堂男人天堂| 午夜操一操| 少妇天堂| 97网站在线观看| 亚洲国产丝袜在线观看| 操人妻逼91| 青青网三级视频| 成人性爱电影网| 操逼逼福利视频| 国产一区二区三三视频| 国产操伦| 美女午夜福利免费视频| 久久老子无码午夜伦不卡| 日韩国产在线观看av| 免费黄色片。| 国产精品亚洲无码| 殴美在线AⅤ| 8x福利精品第一福利视频导航| 男人亚洲天堂| 在线午夜成人无码视频| 久久大黄片| 999精品久久久久久久| 精品人妻视频一区二区在线播放| 日韩人妻精品| 97在线观看| 久久91| 啊啊啊在线观看| 翔田千里AV无码秘 三区| 后入式免费视频| 国产白丝精品在线观看| 午夜小电影在线插入淫高潮| 少妇熟女1区2区3区| 午夜性生活av免费在线看| 国产精品黑人一区二区三区| 一线黄色免费性爱片| 久久久日本电影| 97在线观看免费视频| 欧美不卡五十路| 日日操免费视频| 啪啪资源网| 搡老熟女老女人老熟妇免费视频| 婷婷丁香五月综合| 丝袜狠狠草尤物人妻av91| 蜜色网色哟哟| 夜夜 中文视频rt| 日韩av情韩国爱禁区av一区二区| 国产又粗又长视频| 久久精品午夜国产亚洲AV无码| 性爱Av免费| 999岛国大片| 东京热激情视频一二三区| 日韩AV色图| 五月天加勒比啪| 四虎影视精品| 亚洲欧美日韩免费电影| 日韩精品一区的| 综合色图,成人综合网| 有码色中文字幕在线观看| 天天干人妻视频| 亚洲一区日韩精品中文字幕| 这里只有精品视频在线观看麻豆| 色婷婷久久| 四季AV综合网址| 蜜汁欧美| 国产麻豆福利av在线播放| 欧美亚洲中文字幕| 蜜桃在线观看一区二区三区 | 黑人粗大V S日韩女优视频| JuliaAnnXXX888| 自怕偷自怕亚洲精品| 久99| 玖色av| 国产品精品自在在线午夜免费| 国产91精品福利在线| 久超碰在| 欧美—性—交—色| 人人艹亚洲| 中文字幕视频2区| 日韩精品一区二区人人人| 国产专区第一页| 97操97色| 国产成人99久久亚洲综合| 午夜免费视频1000| 东京男人天堂| 9999久久久久| 人妻大香蕉| 欧亚成人| 内射黑丝袜| 成人97人人超碰人人| 999狠狠综合| 欧美日韩妖精91com| 久久社区一区二区三区| 好舒服视频| 国产v片在线免费观看| 96精品在线| 淫淫综合网| 黄色视频特级毛片| 亚洲天天影视色综合| 色就色综合| 国产肏屁眼视频| 蜜乳视频网站| 1024亚洲中文字幕久在线看片你懂的 | 国产日本一区二区三区蜜臀在线观看| 久久色情| 精品78| 国产亚洲一黄| 国产毛片毛片4p懂色| 久久久工口| 久久精品人妻一区| 熟啊v色欧美热| 国产拍偷精品网站| 精品十三区| 中文字幕一区二区三区高清| 亚洲人妻久久久| 99ri在线视频| 色妇综合网| 九九这里只有精品| 草莓精品视频在线免费观看| 久久久久密臀视频| 日本精品第一视频在'| 日本在线999| 人妻久热在线| 国产福利小视频高清在线观看| 日韩丨制服丨中文|在线| 黄色片大香蕉| 91久久青青草原精品| 欧美97在线观看| 国产白嫩漂亮KTV在线| 60秒免费视频| 91色婷婷综合久久中文字幕二区| 明星性猛交ⅹxxx乱大交| 嫩草伊人久久精品| 久久久久9| 国产精品懂色tv影视免费观看| 99re69| 亚州免费啪啪视频| 视频不卡中文字幕| 久久久国产精品亚洲精品| 玖玖婷婷五月天| 免费家庭乱伦视频| 亚洲在线综合| 诱惑人妻欧美一区在线播放| 日本网色| 免费观看性欧美一级| 久久久女人| 国产污视频麻豆传媒一区二区| 风流老熟女一区二区三区l| 极品人妻少妇综合| 色九九九九| www五月| 精品人妻1区| 精产品久久| 1区2区3区中文字幕日韩| 国产原创剧情在线丝袜| 久综合国内精品自在自线| 国产激情在线| 久偷拍欧美日韩三区| 97资源制服丝袜| 熟女精品va中文字幕| 综合97| 久久久三区二区一区| 大香蕉在线86| 尤物av网站| 99久久99九九99九九九| 色在线亚洲视频www| 欧洲精品一级二级精品综合视频综合 | 久久久久久久久久久久久9999| 日韩欧美成人综合在线| 国产精品午夜AV完会免费| 玖玖资源视频一区二区三区| 狠狠躁天天躁日日躁| 日本91白丝| 影音先锋国产精品| 日本一级二级三级网站| 美女操逼福利视频| 国产AV无码AV| 亚洲AV无码黄色强奸| 99精品国产户外露出| 天天伊人| 国产精品久久久久久久久久久久| 极品少妇久久久久| 日韩欧美蜜桃精品久久中文字幕久久 | 久偷拍欧美日韩三区| 国产久久久9999| 嗯啊不要啊在线 | 天天天堂影视日韩亚洲91| 欧美综合制服在线| av线电影| 9九九国产| 91人妻视频| 好吊色一区| 九九久久首页| 大香网伊人久久综合网eew| 精品久久久久黄少妇| 久久极品伊人| 97干色天堂| 久久夜嗨| 秋霞免费无码视频日韩A片 | 亚洲午夜福利在线影院| 夜夜欧美 | 日韩欧洲操屄视频| 草莓精品视频在线免费观看| 黄页网站免费高清在线观看| 在线视频免费播放一区| 日韩去日本高清在| 综合色图,成人综合网| 色综合98| 91中文精品日韩欧美在线| 午夜天天碰综合视频| 有码免费观看| 欧美国产一区二区三区麻豆传媒| 久久香蕉综合一本到3atv| 国产激情av女片自拍| 久久久亚洲熟妇资源| 欧美情色亚洲| 久久九九热| 97中文综合| 天天摸天天操视频| 91麻豆天美| 黄片视频,下载| 日韩成人性爱电影在线播放| 天美av在线观看| 欧美精品第四五页中文字幕在线观看| 精品乱码久久久久| 九久9精品| 日韩熟女无码| 亚洲97久久精品亚洲| 人人干人人搞人人摸| 99热色精品| 国产男女无套97| 熟妇高潮二区三区| 欧洲黄色网| 国产吞精a级片激情电影| 97香焦色区| 操淫穴亚洲五月丁香| 国内毛片四区| av最新免费中文字幕| 色五月婷婷在线| 99re在线观看| 男人午夜天堂| 色五月综合| 秋霞男人网| 久伊人网78| 人妻中文字幕精品无码| 亚洲精品久| 亚洲有薄码区久久在线一区| 国产日韩欧美操逼视频| 日韩免费性爱视频在线观看| 欧美白嫩女HD| 国产精品久久久久久久久久久久久久吹| 香蕉国产精品麻豆亚洲欧美日韩| 操操啪| 久偷拍欧美日韩三区| 亚洲97在线| 97摸视频| 亚洲男人的天堂AV| 久久精品国产亚洲AV清纯| 日本网色| 国产一区二区精品在线视频| 乳欲人妻办公室奶水| AV一二区| 日韩精品字幕| 亚洲国产剧情少妇激情| 黄色av片三级三级三级免费看| 91熟女综合| a天堂视频| 亚洲成人一区二区精品| 九九九九免费高| 岛国A V在线免费看| 国产精品交换一区二区| 性欧美999| 午夜免费福利视频一区| 天天日美女的B| 日本人妻中文字幕| 欧美久久久15P| 国产拍偷精品网站| 韩日男人的天堂| 屁股久久久久久| 蜜臀国产AV中文字幕| 日韩97超碰| 亚卅熟女乱色| 97美日韩视频| 五月丁香六月| 日本天天干天天操一区| 超碰公开久久网| 久久久久国产精品久久久| 丁香五月成人| 久久精品国产Aⅴ| 欧美 中文字幕 一区| 国产区日韩区在线观看| 97欧美精品综合| 岛国片在线播放| 91 丝袜在线观看| 中文字幕成人理论在线| 91白虎| 色五月婷婷麻豆在| 国产又猛又粗又爽又黄| 人妻丝袜肏逼| 91GD.COM| 欧差乱伦二三| 久久草视频污视频| 久热婷婷| 翔田千里AⅤHD无码| 久久夜夜夜| 亚洲国产欧美中日韩成人综合视频| 黄色av播放免不| 思思热在线观看| 亚洲一区日韩精品中文字幕| 91欧美丝袜| 婷婷深爱五月| 亚欧无码线免费观看视频| 久久久久久久久久久久久久久久9| 家庭乱伦性爱av| 欧美色老汉| 亚洲欧洲小说图片视频| av网页一区二区三区| 男同专区一区二区三区在线| 神马久久中文字幕| 日韩乱伦视频| 日韩黄色片子| 久久久久久加勒比| 欧美91精彩| 天天爽爽爽爽| 亚洲操逼视频网站| 欧美九九九九九| 韩日精品福利视频一区不卡在线免| 婷婷五月天伊人| 久久伊人亚洲AV无码网站| 99在线观看视频在线高清| 欧亚不卡| 久久婷婷成人综合色怡春院| www.99中文字幕| 亚洲欧美成人在线| 中国操逼无码| 日韩一级片在线看| 91一区二区三区蜜桃| 国产精品视频| 国产黄色剧情影片麻豆免费播放| 九色 人妻 大香蕉| 国产精品乱码久久久| 五月天丁香网| 成人5码视频| www熟女乱伦com| 99少妇内射| 欧美第一页| 久久綜合很很很| 免费看毛片操穴| 日韩精品国产一区二区| 97亚洲欧美| AV中文字幕三四五| 97日韩欧美亚洲| 啊啊啊久久久视频| 天美传媒在线一区| 欧美性暴力猛交XXXX| 超碰久久中文| 极品丝袜无码| 精品人妻一区二区三区-国产| 综合欧美日本三级| 亚洲精品日韩国产欧美| 8050午夜少妇无码| 成人福利视频网| 国产黄片精品在线| 99这里只有精品国产| 精品欧美不卡在线播放| 中文字幕在线免费观看2| 青青久久艹| 蜜臀久久99精品久久久久久婷婷| 欧美92| 九九九九九九免费视频| 色97综合中文字幕| 欧美精品欧美精品系列| 亚洲脚交| 五月天精品| 日韩欧美女求操每天更新| 激情另类激情| 90后后入| 日韩超碰97| 九九九久久久| 妇女性内射冈站HDWWWCOM| 被窝影院午夜看片无码| 人妻一二三区| 在线精品福利免费播放| 人妻熟女一区在| 刺激性视频黄页| 久艹伊人精品综合在线| 国产第二页| 乱操9999| 日少妇视频| 日韩有码 一区二区三区| 思思视频免费看网站| av网站在线看| 强奸乱伦资源| 黑丝少妇| 噜噜噜久久亚洲精品色情| 91欧美巨乳| 夜色综合| 久操网视频| 亚洲女毛多水多21P| 超碰国产在线| 福利一级版子| 亚洲欧洲综合| 成在线人在线观看视频| 色五月首页| 亚洲最大黄网| 一区二区三区色综合| 久久精品电影在线| 国产精品探花色| 色欲天天综合网| 蜜臀人妻少妇久久在线观看| 自拍啪啪视频| 中文字幕后石码四区五区| 不卡中文字幕aⅴ在线| 亚洲精品三区在线观看| 色色色色综合网| 久久水蜜臀亚洲AV无码精品| 久久大香蕉97| 这里只有精品视频在线观看麻豆| 婷婷色色网| 老女人老91妇女老热女| 九九九九精品精| 麻豆国产免费影片| 老女人碰碰在线碰碰视频| 国产精品自在线发布| www.99在线| 超碰夫妻97| 欧美亚洲激情| 大香蕉乱伦视频网| 一本色道久久综合熟妇| 亚洲人妻中文在线视频| 五月天色五月| 少妇人妻在线| 亚洲日韩视频二区| 精品国产乱码久久久久久影片| 青青操视频在线| 极品欧美一区二区三区| 狠狠婷婷亚洲中文综合久久| 国产伦乱91| 欧美97se| 四虎免费在线播放| 色图四区| 变态综合色| 亚洲熟女乱综合一区二区三区 | 日日97| 久草草一二三四区久久| 91五十路| 人妻熟女字幕一区二区| 久区视频| 操逼网站视频漫画国产| 99re在线视频| 亚洲操逼无码| 中精品一区二区三区| 天天摸夜夜添无码小视频| 午夜欧美J进J出白浆流出久久久| 日本不卡三级网在线播放| 欧美日韩操逼嗦吊| 情趣丝袜无码操逼视频| 最近2018中文字幕在线高清第一页| 欧美色就是色| 爱做久久久久久| 人人操人人大香蕉| 精品人妻一二三四区视频| 国产深夜福利| 嗯啊啊啊轻点视频| 国产 日韩 欧美一区| 这里是精品| 国产超碰AV在线精品| 久草色悠悠在线视频| 欧美呦呦性爱| 天堂资源站| 殴美在线AⅤ| 婷婷九月丁香| 大香蕉乱伦视频网| 色欧美亚洲| 超碰97资源中文字幕| 两女互慰AV高潮喷水在线观看| 日韩人妻精品中文字幕| 久久亚洲AV无码专区国产精品| 久操av在线| 婷婷色综合| 啪啪啪综合网| 五十路熟女工口 | 99热导航| 在线精品福利免费播放| 男女啊啊啊啊啊| 禁止观看美女黄| 成人日韩3| 91蜜桃传媒精品久久久一区二区| 成人性爱全视频观看| 国产一区二区成人av在线播放| 国产伦乱91| 96精品久久| 插老姨肥穴| 日本123区操B视频| 屁股久久久久久| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 人妻干天天| AV色五月| 天堂日本亚洲欧美| 欧美亚洲日本激情在线| 日本视频在线中文字幕| 美熟女逼导航AV操逼| 大香蕉免费中文| 久久精品国产亚洲AV高清演员表| 99日视频在线免费| 欧色综合| 噜噜吧,噜噜色,噜噜| 91丨国产丨白浆秘 洗澡动漫| 91无码人妻| 丁香婷婷九月| 人人操人人操人人人操| 久久超碰日韩精品| 99后入| 亚洲国产一区二区三区在线| 在线人人人人人人精品超| 91久久久亚洲| 欧美日韩久久精品爱爱| 丰满欧美少妇| 97鸡把在线视频| 性在久久久久久| 日韩天天本| 国产精选三级在线观看| 超碰人人操97碰| 国产精品夜夜夜| 国产精品欧美激在线| 亚洲素人综合| 自拍偷拍2025在线观看| 26uuu欧美日韩| 91伊人| 黑人粗大V S日韩女优视频| 超碰97在线 欧美 国产| AV大香蕉| www.丁香五月| 懂色AV蜜臀无码精品APP| 亚洲成人黄色在线观看| 好爽免费视频| 国产日韩怡红院| 91欧美巨乳| 大香蕉在线视频15| 夜夜嗨一区二区| 亚洲乱熟女一区二区三区大香蕉| 可能人人看人人摸| 狠日操| 成人av福利在线观看| 欧美激情激情xxxx欧美专区| 精品九区| 97天天操| 亚洲激情视频| 性一级黄色录像片网站导航| 色色九区| 亚洲爽图| 国产高清亚洲日韩一区| 91福利网在线观看| JIZZJIZZ亚洲女人被躁| 俺去啦俺来也久久综合| 国产无码精品高清| 操日韩第| 亚洲国产婷婷在线播放| 国产在线激情视频| 韩日性爱av| 无码操逼网| 久久亚洲精品成人av| 国产精品免费美女视频| aaaa少妇高潮大片| 国模精品娜娜一二三区| 强奸乱伦动态污图免费| 污污汅18禁网站在线永久免费观看| 亚洲中文字幕精品一区| 人妻无一区二区三区| 国产乱色国产精品免费视| 久久五十路熟女人妻| 综合久久六月久久婷婷| 强奸a片网| 91爱综合| 超碰天天操你比| 中文字幕av片| AV女资源| 蜜臀久久99精品久久久久| 人人贴人人摸| 免费的黄片有限公司| 欧美性爱伊人| 欧洲熟妇xxXx欧美老妇裸体 | 九九热精品在线| 亚洲一区二区三区久久 亚洲一区二区| 夜夜高潮夜夜爽高清视频一 | 夜夜青青无码影院| 伊人国产AV| 久久精品久| 97在线精品观看视频| 欧美日韩性爱操大逼| 六月婷婷激情| 日日做夜狠狠爱欧美黑人| 亚洲综合色图欧美| 欧美精品久久久久久久丰满| 国产精品岛国片在线观看| 久久精品人体| 日韩熟女视频二区| 97国产精品| 乱伦3P视频| 欧美精品另类人妖xxxx| 精品少妇人妻| 免费a v| 97国产成人精品免费视频| 337p大胆噜噜噜噜噜91Av| 超碰人妻久久人妻中文97| 超碰久久.com| 精品人妻1区| 清柠毛片| 国产精品粉嫩福利在线| 91熟女网| 欧美v亚洲v日韩v最新在线二区| 精品国产一区二区久久| 精品一久久久| 亚洲国产综合图区中文字幕| 92人人操人人| 中国小夫妻勾搭露脸淫荡对白| 蜜臀久久久99久久久久 | 欧美偷偷网| 亚洲人妻中文在线视频| 精品一二三区久久AAA片| 韩日精品四区| 日夜尻逼网| 国产亚洲女v在线观看| 超碰亚洲欧美日韩无| 亚洲久久天堂| 福利在线观看一区二区| 情色五月天久久久| 亚洲全色网| 成人欧美一区二区三区黑人一| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 日韩啪啪网| 97精品综合久久网| 乱性AV| 香一区二区三区| 丰满人妻-区二区三区免费看| 操我无码| 另类专区加勒比| 你懂的在线观看区国产| 内射白嫩美女| 俞拍久久国应视频| 婷婷五月色| 激情文学 亚洲图片| 亚洲综合欧美| 伊人久久青青草| 久久9久| 香蕉在线一区二区三区| 三级色影综合网| 玖玖在线视频| 一区二区影视| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 黄片直播三级黄片两女一男| 人澡逼| 福利在线黄片| 91久久国产精品| 99久久婷婷| 欧美高清色| 中文字幕视频2区| 日韩性爱小视频| 午夜性| 色欲三区| 精品无码久久久久| 久久久久九九九| 乱人乱色一区二区三区免费| 国产超碰在线| 神马麻豆福利院| 18精品一区| 国产精品直播在线观看直播| 中文字幕视频2区| 亚洲好看强奸乱伦| 少妇内射视频| 五月天色色网站| 青青草国产欧美非洲黑人| 亚洲国产剧情少妇激情| 成 人片 黄色大片| 欧美亚洲清纯| 六六久久日韩不卡| 欧美综合网在线| wwe 天天干.com| 操逼操逼视频操逼| 日日爽熟女| 91老司机在线视频免费观看| 亚欧无码线免费观看视频| 久久爱超碰网| 亚洲人妻AV| 中国农村熟妇毛片视频| 99xav| 国产精品成人蜜臀AV在线| 熟女熟妇一区二区三四区| 吻戏激情性巴克| 国产成人91一区二区三区| 久久久久密臀视频| 天天干少妇| 精品国产91内射久久| chaopen97久久| 色综合美国| 亚洲毛片一级带毛片基地| 人人操超碰在线| 不卡码视频| 亚洲最大网站av| 一级AV性爱| 9999九九九久久久| 九九九九九九九精品视频| 国产日韩精品人妻久久久久色欲网站| KK色在线影院| 中文字幕十五区| 久久婷婷视频| 日本欧美一区二区三区免费| 亚洲天天操| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 久久婷婷电影网| 久久9999| 伊人影院在线理论播放| 黑人精品成人一区二区三区| 18禁看网站一区| 精品1区2区3区| 欧美偷拍区| 最新国产精品久久精品| 欧美大色交| 香蕉久久国产AV一区二区| 91亚洲黄色网| 91美女视屏| 免费超碰97在线观看| 日本不卡在线二区三区| 91无码中出人妻视频| 国产精品久久久久久9999| 国产色精品午夜大片| 日韩精品人妻| 超碰久超碰久| 少妇蹲下买菜露大唇0| 麻豆性爱视频在线播放| 大香蕉操久久| 99久久99九九99九九九| 成人性交免费视频| 97色欧洲| 免费a在线播放v| 日本高清_区二区三区| 人妻大香蕉| 中文字幕成人| 手机在线A片| 日本一区二区中文字幕久久| 青青草一本道福利视频| 国内一区二区三区| 精品一区二区三区蜜桃臀www| 老女人日韩美91| 日韩偷拍色图| 夜夜操av亚洲一区二区| 91爱综合| 热天堂一区二区| 欧美极品少妇交| 亚洲国产欧美日韩人妻日中文| 蜜臀久久99精品久久久老,,| 思思热在线视频精品| 蜜臀久久99精品久久久久久久久| 亚洲九月丁香| 国产女人成人精品视频| 激情丁香五月婷婷| 欧美少妇熟女| 中文字幕老熟妇黄色视频| www.婷婷六月天| 中文字幕 一区二区 亚洲无码| 一区二区三区日韩欧美| 午夜天堂网| 久久111| 欧洲射精91| 日日骚精品视频| 97综合久第一页| 高清孕妇孕交 交| 色臀av| 高清国产无码av| 国产精品嫩草影院免费| 欧美一区二区观看在线| 天天日天天爽| 97干色天堂| 九九国产热| 78操B| 久久精品国产亚洲5555| 中文字幕亚洲热播人妻| 国模精品一区二区三区苹果色戒| 精品人妻伦一二三区久久| 精品无吗久久| 色偷偷人人玩人人舔人人操人人摸人人爽 | 抽查国产福利主播| 欧洲精品久久| 婷婷国产精品一区二区| 国产成人99久久亚洲综合| 凹凸视频在线观看伊人| 精品久久久久,69国产成人精| 精品网站99999| 午夜福利 成人 91| 日韩中文字幕国产| 色香色欲天天综合网天天来吧| 激激五月| 综合网亚洲1| 亚洲色天| 色色色99| 操逼啊啊啊91| 国产按摩一区二区三区| 人妻无码一区二区三区久久99| 欧美一级二级三级| 亚欧日韩成人| 人人澡人人爽人人精品| 啊啊啊操死我了| 欧美日韩色综合网| 少妇 综合| 久久中文字幕人妻熟av女蜜柚| 自拍偷拍草一草| 色啪网| 国产乱青青草久久| 久久久久久久| 亚洲AV无码乱码在线观看性色| 加勒比综合九九99视频在线播放| 欧美操逼录像国产黄色国产| 中文字幕精品日韩中文字幕| 97se综合网| 60秒不遮不挡| 99热自拍| 欧美精品久久| 欧美1区二区三区公司| 精品久久久九九九孕妇| 青青草原av| 5278欧美一区二区三区| 久久久久久亚洲精品中文字幕人妻| 久久精品一区二区三区蜜桃臀| 大学生口爆吞精| 爆乳免费黄网站| 超碰九7| 中文字幕日韩综合| 五月天精品| 欧美成人午夜免费福利785| 狠狠搞 亚洲91| 搡老熟女免费视频 | 亚洲人精品久久久| 色伊人91| 九九热精彩视频| 一类无码操逼视频| 98超碰日本| 精品欧美А∨无码黑人大荫蒂| 久久久久国产亚洲一区欧美色图日韩 | 白 大 人妻 区 在线| 天天干天天燥| 欧美亚洲厕所精品偷拍91| 色综合V| 亚洲视频一二区| 欧美五十路熟| 淫骚熟女一区二区三区| 无码WWW免费视频网站| 神马久久啊啊| 亚洲欧美日韩精品久久久一区二区| 97久久国产精品| 精品一区二区成人动漫| www久久精品| 激情综合网激情五月天| 欧美激情在线观看视频| 后入美女国产| 精品黄色电影| 国产13区| 盗摄女人妻在线| 中文字幕免费看| 五月激情综合网| 日本影视久久免费| 乱理日韩中文| 亚洲精品毛片在线观看| 欧美女同在线| 国产少妇肉丝在线观看| 亚洲电影中字一区二区| 91久久久老司机| 国产精品一区二区 尿失禁| 99热线麻豆 | 天天拍天天操| 9999久久久| 东北老女人的激情视频| 草莓精品视频在线免费观看| 中文字幕欧美日本乱码一线二线 | 开心激情婷婷| 无遮挡男女激烈动态图| 欧美国产一区二区三区麻豆传媒| 丝袜美腿制服人妻二区中文字幕| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 91肉片| 中国小夫妻勾搭露脸淫荡对白| 国产精品视频精品一二| 日本欧美不卡| 亚州色站 日韩电影| 亚洲色图亚洲无码强奸乱伦| 91精品在线播放| 国产农村妇女精品1区二区| 亚洲一本大道中文字幕无码在线| 我想要啊 啊 啊| 欧美极品女人的天堂| 天天操夜夜嗨| 2017天天操| 久久夜精品一区二区三区| 91熟女熟妇视频网站| 天天躁日日躁AAAAXXXX国产| 97欧美色| 1204av韩国| 开心激情婷婷| 乱伦AVxx| 国产不良强奸视频免费看| 亚洲中文字幕一区二区| 超碰免费人人| 久久社区一区二区三区| 国产精品第一页国产大屁股视频免费区| 美女91在线观看| 久久精品欧美一区蜜桃| 日本人人操人人操| 91性高朝久久久久久久久| 日韩欧美麻豆| 超碰97欧美日韩| 性欧美天天| 人人爽天天爽| 激情专区综合| 国产精品香蕉热久久新品| 亚洲中文字幕在线视频一区二区 | 久久艹逼视频| 久草老司机| 蜜桃精品一区二区三区ww| 国产精品无码AV网站| 国产成人亚洲精品无码最新在线| 啊啊啊操死我了| 亚洲综合骚逼| 欧美中字二区| 人人喜人人妻| 亚洲五月婷| av在线一区二区三区| 国产成人精品必看 | 九九热AV| 国产99 中文字幕日韩小视频| 麻花豆传媒剧国产MV出差| 极品销魂美女一区二区| 97超碰中文在线| 亚洲图片小说欧洲| 久久久精品九| 精品无码产区一区二| 蜜桃臀av在线观看| 毛片电影一区二区三区| 成人福利视频网| 八戒无码国产午夜福利| 日本熟女不卡视频| 日韩兔费看黄片| 九九九色| 粉嫩av在线| 欧美精品三级黄片| 国产成人亚洲精品无| 中文久久久| 青青草中文字幕| 天天操夜夜操| 少妇九九九九| 人妻丰满熟妇av无码区蜜桃| 极品美女嘿咻| 欧美天天干| 美女诱惑一区| 三级精品三级在线观看|