日韩精品一区二区三区在线视频放-无码中文字幕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
返回資訊列表
久久九色| 日本在线伊人啪啪| 曰韩人妻中文字幕在线| 91黑丝操| 99e久久国产精品| 97日本超碰综合| 男人的天堂Va| 久久久九97| 蜜桃AV天堂| 亚洲美女自拍偷拍视频| 91网站18+| 国产h片在线观看视频| 欧美色日本| 澳门黄片一香蕉视频| 丝袜熟女2P| 综合97| 成人短视频在线观看| 亚洲少妇激情一区二区三区| 东京热亚洲一区二区| 男人天堂新在线| 人妻熟女午夜精品在线| 精品人妻一区二区三区在| 成人 日韩欧美一区| 欧美色九九| 五月丁香影院| 黄色视频高清无码网站| 欧美人妻色| 亚洲日韩美国人妻| 久久久久久久人妻丝袜| 成人天天看站长推荐| 91av一区二区在线观看| 欧美一级专区免费大片| 五月天大香蕉| 91动漫操逼视频| 搡老女人老91二区| 啊啊啊不要啊啊受不了了视频在线| 成人免费毛片| 一级特级aaaa毛片免费观看 | 亚洲成a人v欧美综合天堂下载| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 国产高清不卡视频| 欧美十八禁导航成人| 日韩大香蕉精品在线视频| 黄色大香焦1级‘′‘| 日本免费二区三区| 欧美日韩222| 国产人妖视频一区在线观看| 欧美色网络| 熟妇熟女一区二三区| 你懂的在线观看区国产| 黑人干亚洲| 蜜臀少妇一区二区| 国产亚洲精品美女久久久m| 精品无码一区二区三区| 97视频网站在线观看| 最新亚洲人成网站在线影院| 人妻夜爽夜夜爽| 91精品国产综合久久久蜜臀| 国产又操| 国产精品嫩草久久久久| 久草新在线| 色综和网| 久草久热| 亚洲综合成人网| 高清有码一区二区| 九九九九久久久久| 91操熟女视频 | 成人性爱美曰韩| 熟女人妻久久中文字幕一二区| 五月婷亚洲精品天堂| 热的中文 热的有码 热的国产| 五月激情综合网| 又大又长又粗又爽又黄| 久久性爱视频免费看| 午夜久久久| 高潮内射在线| 激情五月丁香五月| 青草青草久热| 人人妻人射| 日韩欧美福利视频看看| 一区在线精品中文字幕| 精品国产乱码久久久| 蘋果手機免費看成人Av| 96国产污污污丝袜| 欧美欲色| 欧美午夜色妇色鬼| 粘花网06av视频| 日本熟妇一区二区三区| 综合久久中文字幕综合日韩精品| 2021久久国产综合精品青草| 欧美经典一区二区三区| 欧美探花网| 激情小说在线视频| 少妇蹲下露出大唇5| 四虎在线观看网站| 高颜值美女口爆高潮浪叫| 欧美综合色综合| 91在线/欧洲| 刺激精品视频| 欧美性综合| A啊啊在线观看| 老熟女熟妇| 男人天堂站| 97欧美精品综合| 人人喜人人妻| 亚洲欧美爆| 亚洲av总站| 中国AAAAAA黄色片| 亲子敌伦对白在线播放 | 干B| 欧美色图人妻| 蘋果手機免費看成人Av| 久久久91福利姬| 女上位精品在线| 亚洲男人天堂2| 中文字幕一区二区三区蜜桃视频| 97中文字幕一区| 欧美美女视频| 超碰精品日韩欧美国产| 日韩欧美成人性爱在线| 中国探花熟女| 亚洲黄日韩无码专区| 久久人爽| 亚洲男人天堂2017| 久久久久久久强迫| 青青操综合网| 精品少妇一区二区三区在线视频| 欧美少妇第一页| 少妇69中文| 久久精品99久久久久久| 综合少妇网| 97资源站日韩| 男女猛烈无遮掩视频免费软件| 日韩 国产 欧美自拍| 91av一区二区在线观看| hd成人一区二区在线| 婷婷综合在线| 97大色网| 人妻91少妇| 亚洲阿v天堂在线| 八戒午夜福利理论片| 丰满人妻一区二区三区四区| 亚洲国产欧美中日韩成人综合视频| 99色综合| 日韩中文9| 欧美偷拍| 岛国大片在线观看网站入口| 天天日天天舔天天喷天天射| 亚洲爱爱视频一区二区| 香蕉视频欧美一卡二卡| 日韩精品99999| 精品小视频在线| 婷婷精品久久av影视| 午夜美女福利视频| 不卡在线观看视频| 青娱乐福利99| 香蕉视频欧美一卡二卡| a'v在线资源| 日韩黄片视频试看| 丁香五月久久| 青青草吊丝| 日产成人久久| ss久久| 欧美牲| 少妇久久久久久久| 亚洲se电影| 日韩无码一区二区三区| 2020中文在线一区二区三区| 久久侵犯人妻爽爽爽| 91亚洲在线| 日本岛国黄色网址| a级理论午夜日本| 久操热线| 久久久91福利姬| 亚洲av噜噜噜噜噜噜| 熟女人妇一区二区三区| 330Dv国产女人终合视频极品人与兽 | 91狠婷| AV久日| 操逼日韩无码| 啊啊啊啊二区好大| 国产伊人精品在线| 户外裸露刺激视频第一区| 午夜福利久久久噜久噜久久综合| 日韩欧美中文字| A 天堂| 六九九九| 久久久96| 91久久久视| 2017av无码免费无线播| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 日韩免费在线视频观看| 97香蕉网| 熟妇一区二区三区| 人妻精品综合中文字幕在线 | 亚洲另类综合欧美| a男人的天堂久久一级A毛片| 91高潮| 97超碰人操| 香伊人在线| 色五月婷婷网| 农村女一级毛卡片| 欧美 传媒 麻豆 日韩 偷拍| xxxx网站亚洲精品| 亚洲交换| 女一区二区| 日本免费中文字幕在线| 色综合天天爱去电影网| 手机av天堂久久久久| 久久伊人在线五区| 天天躁日日躁成人字幕aⅴ| 久操 高清| 欧美色图片91| 不卡av在线中文字幕| 久久一本大香蕉| 亚洲中文字幕网| 91av熟女人妻| 中文字幕第二页| 热久久91婷婷| a在线观看| 色黄污美女啪啪啪免费网站| 中文区中文字幕免费看| 99九九久久| 亚洲天堂99| 国产在线视频二区| 蜜臀久久99精品久久久电影| 久久视频,这里只有精品 | 人妻久久久| 成人麻豆av电影网站| 国产路线专区| 一本大道久| 亚洲青色欧美| 欧美日韩精品久久久久久久久东北老熟妇 | 欧亚日韩三区| 久久久9品一区二区三区| 日韩精品中文字幕二区| 国产欧美精选激情视频| 91搞逼视频| 国产精品人妻无码久久久互動交流 | 9久9久9久9久视频网站| 欧美成人性爱视频在线播放 | 久久老女人| 日韩激情啪啪啪| 男人的天堂 在线一区| 色欧美色交综合| 中文字幕精品亚洲熟女| 色香91| 人妻五十路在线| 怡红院成人av| 亚洲www91| 午夜天堂精品久久| 色天堂综合| 欧美久久婷婷| 九一国产精品| 91久久婷婷| 人妻熟妇一区二区三区| 亚洲熟女一区二区| 国产精品久久久亚洲第一牛牛_在线观看| 久久亚码| 欧美姓爱综合网| 亚洲天堂一区| 高清一区AV无码| 欧美狠狠操| 久久男人的天堂国产| 日本亚洲vr欧美不卡高清专区| 欧亚洲精品有视频| 超碰人妻中文在线| 一区二区三区高清| 精品久久久久久无码| 日本在线不卡v二区| 久操热| 欧美激情视频一区二区三区不卡| 密臀AV在线| 亚洲精品熟妇1区2区3区。| 中文字幕一二三| 久操网址| 午夜精品99久久久久传媒| 亚洲九九夜夜| 欧美熟妇乱码在线一区| 欧美瑟综合| AV天堂男人的天堂| 成年人性爱日韩| 中日韩免费看男女操逼大全| 天堂资源欧美| WWW操逼| 天堂av2019| 久久欧美按摩999| 婷婷97| 日本黄页视频在线观看| 欧美无圣光在线| 一级AV性爱| 人妻精品视频一区二区三区| 91亚洲人| 午夜福利国产欧美日韩夜夜| 曰韩操B| 欧美劲爆视频一区二区| 五月婷婷丁香| a在线观看| 日韩av在线播放不卡| 精品一区二区人妖| 中文字幕 码 自拍 视频 区| 天天操女人| 欧美亚洲一区二区久久久婷精品大包诱| 丁香色狠狠色综合久久小说| 午夜福利一区二区三区四区五区色婷婷| 操香逼| 麻豆区99999| 中文字幕-区二区三区四区视频中国| 国产精品乱人伊人网| 中国AAAAAA黄色片| 久久久国产精品亚洲精品| 四虎在线播放| 欧美一级黄色18片免费看| 95自拍视频在线观看| 日本三级R| 成人老鸭窝人人在线视频| 嗯嗯啊啊的视频| 全国男人天堂网| 亚洲日本韩国在线| 久久久国产精品人妻丝袜| 国产色精品午夜大片| 秋霞无码av鲁丝片一区| 家庭乱伦国产| 久久 国产精品 一区| 玖玖爱影院| 色色色网站| 欧美1区二区三区公司| 性爱av在线免费观看| 啊啊啊不要嗯嗯在线观看| 欧美色图天堂在线| 色婷五月天| 色爽——AV| 最新亚洲人成网站在线影院| 婷婷成人久久久精品| 中文字幕熟女人妻丝袜| 国产做?爰片久久毛片?片美国| 九九热视频这里只有精品| 亚州综合电影| 国产精品精品系列在线观看| 亚洲综合春色| 天天干人人看综合| 性感女人网页在线观看视频| 欧美91精品国产自产| 啊啊啊不要好疼视频| 中文字幕三四区| 333kkkk·亚洲com久久| 亚洲女人毛茸茸91| 亚洲av强奸乱伦| 久艹免费| 最新中文字幕在线亚洲| 日韩精品怡红院| 国产AV色黄看到爽| 少妇丝袜在线观看AV| 欧美日韩国产色图在线| 久久精品成人一区二区三区蜜臀 | 丝袜AV一区二区三区| 色色激情五月天| 欧美精品三级黄片| 欧美论理片| 人人妻人人狠人人| 97爱爱| 亚州色图片在线色| 亚洲天天艹| 炮色五月| 性暴力欧美猛交在线直播| 天天插天天操天天摸天天射天天看| 国人欧美精品一区二区| 欧美一级A一级a爱片久久| 开心六月色| 69视频福利导航| 日韩婷婷| 日韩丰满熟妇| 日韩av免费一级电影| 麻豆色99999| 91总综合网| 狠狠 91| 艹比视频国产精品| 国产黄色在线播放观看| 亚洲人妻久久| 久久爱97| 超碰97人人乐| 久操视频在线观看| 国产精品极品美女视频| 久久超碰久| ?亚洲伊人伊成久久人综合网| 国产精品自在自拍视频| 97操97干| 热天堂一区二区| 久草线上视频免费看| 亚洲欧美自拍偷拍| 12一15性XXXX粉嫩国产| 丁香五六月啪啪| 国产毛片片精品天天看视频| 色哟哟av网址| 久久宗合97| 久久r精品| 十八禁电影伊人网| 色婷婷A V一二三四区麻豆综合| 长久操视频| 日本高清加勒比| 超碰在线第一页| 天天爱综合网| 欧美啪啪啪91| 久久久久久久97| 九九久久玖玖| 久久久久免费看少妇A片特黄| 三级特黄60分钟播放| 亚洲最新中文字幕免费 | 理论久久婷婷网8| 久久久久熟女| 少妇久久| 午夜AV人气不卡| A片大香蕉在线| 2017人人操,人人摸| 亚洲啪啪视频一区二区| 久久久婷| 蜜桃视频一区二区三区在线观看| 狠狠色一区二区中文字幕| 夜夜嗨免费视频| 国产suv一区二区三区6| 精品国产一区探花在线观看| 国产精品无码久久久久2028| 九热中文字幕| 激情人妻另类| www久久99| 男女打扑克高清网站| 天天综和| 舔人妻中文免费视频| 在线97视频| 精品人妻一区二区视频| 大香蕉啪啪啪| av麻豆啪啪| 天天舔日美女视频| 午夜男女爽爽大片免费观看| 91三级理论片播放器| 丁香激情网| 久久男人网| 97在线视频观看免费| 激情小说亚洲| 国产成人bd在线观看| 日韩亚洲美州欧洲综三区一品在线| 欧美国产视频| 久久国产乱子伦精品免费女,网站| 色综合V| 免费看日产一区二区三区| 精品久久久久瑟瑟| 久久精品国产亚洲粉嫩| 91在线超高颜值国产| 五月婷婷六月激情| 国产精品一级二级在线| 国产精品成久久久久午夜午夜| 久久东京伊人一本到鬼色| 欧美亚洲丝袜人妻制服99| 伦理弟一页| 女性91网站| 国产精品亚洲一区二区三区四区| 蜜臀人妻少妇久久在线观看| 97超碰欧美精品| 成人乱码一区二区三少妇| 刺激性视频黄页| 欧美日韩国产精品久久色婷婷| 国产极品粉嫩馒头一线天av| 丁香五月综合| 中文字幕第二页| 91深夜夜| 在线 亚洲 网爆 自拍| 69少妇一区二区| 日韩欧视频| 日韩无码嘿咻黑热久| 志村玲子视频一区二区| 久久精品视频久久久| 日本二区不卡| 91日日夜夜| 青草草免费网站av| 神马福利久草| 老鸭窝成人免费毛片视频| 粉嫩av在线一区二区| 啊啊啊啊啊啊好湿好爽视频| 九九九九热| 久久久人妻| 婷婷探花久久精品一区| 91人妻中文| 精品乱码久久久久| 日韩国产欧美伦理在线| 97超碰逼| 天天躁日日躁AAAAXXXX国产| 91天堂视频| 国产精品成久久久久午夜午夜| 亚洲天堂区| 超碰色97| 亚洲五月丁香花狠狠干一区二区三区 | 无码少妇精品一区二区60岁老人| 中文字幕二区| 十八禁啪啦拍视频无遮挡| 超碰97在线中文| 91快色色色色色| 亚洲精品1区| 日韩Va亚洲va欧美Ⅴa久久| 蜜桃色院一区久久| 国人欧美精品一区二区| 人妻精品一区一区三区蜜桃91| 伊人网综合在线视频| 蜜臀av网址| aⅴ日韩成人电影av在线免费看av大全| 欧美色图91p| h4610国产人妻| 91色色综合| 自拍大香蕉乱插| 一区二区三区男人的天堂| 国产精品999zyz| 亚洲无限观看| 国产一区二区视频在线播放| 国产精品69久久久久久久| 久久久久亚洲Aⅴ无码| 大香蕉92| 狠狠干婷婷| 五月天亚洲色图| 老色69| 伊人操你| 啊啊啊啊在线播放| 九九色色| 午夜福利1区2区3区| 精品一区二区三区四区外站| 天堂中文资源在线bt| 九九九不卡| 欧美熟女少妇| 在线观看不卡一区二区三区| 97视频在线视频| 五月丁香| 久久透逼视频| 国产av色网| 天天综合91在线| 人人操人人色人人摸| 国产丸一视频| 一品道视频一区二区三区| 岛国免费视频在线| 欧美精品欧美精品系列 | 亚洲九区| 私人尤物在线精品不卡| 操曰本熟女| 欧美色自拍| av天堂影视中文在字幕在线中文| 酒色综合网| 影音先锋一区二区在线资源| 国产免费久久久久| 精品国产av一区二区三区四区入口| 超碰在线97国产| 久久久极品| 美腿色图| 久久久国产三级黄色片| 啪啪性爱免费视频| 快播久久人人aV| 特级大荫道BBwBBwBBW| 草莓精品视频| 激情小说图片亚洲首页| 成人青青草原伊人| 国产青青美女玩逼视频| 超91综合网| 日韩不卡在线一区二区| 免费无码婬片AAAA片直播色戒| 久久后入制服| 人妻在线大香蕉| 五月丁香色婷婷| 国产野战露脸在线播放| 欧美亚洲91| 亚洲91射| 97一本大道亚洲一区| 丝袜美腿诱惑亚洲欧美视频在线观看 | 欧美综合色图网| 金典av| 欧美专利1区2区3区4区5区免费| 午夜国产成人福利视频| 亚洲不卡三级手机播放| 99热日| 国产精品久久久久亚洲av| 青青草视频久久久久| 欧美熟女操屄| 日韩强奸av| 国产动漫操逼视频| 女上位精品在线| 天天综合AV| 国产日韩欧美三级片| 欧美A片中文字幕| 97超碰中文在线| 大香交| 欧美91网站| 人人操天天爽| 亚洲综合春色| 五月综合色| 日本在线不卡v二区| 丁香九月 婷婷| 97免费视频在线观看| 欧美亚洲成人在线一区二区三区| 国产久久视频| 熟妇视频一区二区三区在线观看| 狠狠中文字幕| 欧美1727免费观看视频| 国产一级片| 国模精品一区二区三区苹果色戒| 日韩人妻中文视频| 91精品久久久久五月天精品 | 中日韩免费看男女操逼大全| 超碰在线一区二区| 中文字幕乱亚洲美女精品一区| 日日骚一区二区三区| 欧美后入式| 久久国产精品视频| 日本道人妻久久久在线不卡色视频| 超碰免费欧美7| 我爱搞逼综合网| 狠狠做深爱婷婷久久二区| 夜夜操一区二区| 色偷综合| 成人亚欧免费视频| 天天做天天爱夜夜爽毛片试看| 一级AAA片一区二区三区| 国产黑白丝在线| 99re99在线视频| 亚洲人妻五月丁香婷婷| 日韩少妇无码| 久久亚洲中文字幕视频| 欧美1区二区三区公司| 亚洲国产欧美另类自拍| 国产精品蜜乳AV| 伊人五月天| 美女黄色一级A视频| 淫色网综合| 91挑色欧美| 日韩av电影网站| 欧美亚洲特P| 久九干| 午夜精品久久久久久久99热影院| 97精品中文字幕| 视频二区美腿制服人妻欧美| 一区二区三| 国产精品点击进入在线影院| 亚洲欧洲精品成人| 国产又粗又长又爽又色| 91 亚欧| 欧美综合第一页| 秋霞免费无码视频日韩A片| 国产精品 久久久精品一牛| 大色综合网| 久碰视频| 亚洲中文字幕日产无码久久| 情色五月天就去干| 97色碰| 中国农村熟妇毛片视频| 在线看片国产精品每日更新| 蜜桃久久一区二区三区| 美女主播色欲91抠b在线播放| 欧美色图97| 欧美少妇色图| 国产AV激情无码久久无码 | 亚洲色电影在线| 边做饭边操逼逼| 伊人女女资源在线观看| 无码91| WWW美腿丝袜香蕉中文| 久久久久久九九九| 午夜福利在线合集| 激情四射婷婷四五月天| 中文字幕日韩人妻视频| 大香蕉97久久| 岛国片国产成人亚洲播放| 大香蕉久| 91黑丝美女| 日本不卡一二区| 国产中文大片资源中文字幕| 婷婷尹人大香蕉免费| 98精品国产乱码久久久久久| 亚州男人天堂| 乱欲一区二区| 久久嫩草国产成人一区| 天天操福利视频综合网站| 国产高清视频无码在线| 婷婷五月成人| 九九国产热| 亚洲天堂久久久久久粉红视频| 日韩激情啪啪| 伊人国产视频| av网站免费看| www久久久| 91路www| 成人蜜乳小视频网站| 日本九九九九| 极品色电影院| 成人无码在线超碰网| 一区二区偷拍拍视频| 大屁股熟女一区二区三区| 日韩精品一区二区高清| 性欧美另类高清| 密臀在线视频| 黄片直播三级黄片两女一男| 国产亚洲精品美女| 免费观看网黄| 伊人国产av| 麻豆久久一区二区三区| 久久99久久99精品免视看婷婷| 中文字幕诱惑制服人妻丝袜美丝袜美| 精品人妻视频入口| 97爱爱爱综合| 九九九九九九视频免费| 丁香激情五月| 日韩综合97p| 自拍鲍鱼一区在线高清观看免费| Julia Annxxxxx| 奇米四色影视777久久久| 午夜成人福利影视| 日本国产欧美一区三区二区| 97天天搞在线| 欧美亚洲激情| 欧美日韩丝袜 | 老熟女91av| 97在线观看| 情色日播放AV| 激情综合网激情综合| 一二三四免费视频| 亚洲se91| 久悠悠av| 日本一区二区亚洲综合| 性欧美天天| 性爱网站一区二区| 久久水蜜臀亚洲AV无码精品| se吧提供国产乱老熟视频胖女人| 岛国人妻少妇av在线观看| 日韩精品一区二区高清| 精品国产91久久久久久一区黄无| 久久精品国产亚洲5555| 九九热免费在线国产视频伊人五月| 12一15性XXXX粉嫩国产| 日韩少妇丰满亚洲| 精品日韩中文在线| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 91女网站| 边做饭边操逼逼| 天天享受天天看| 日韩人妻制服丝袜av| 欧美激色| 一块操欧美| 大香蕉久久| 用力操死我| 中文字幕一区二区日韩网| 欧美亚州色的图| 国产视频一区二区免费| JuliaAnnXXX888| 欧美不卡在线美女| h色99999| 强乱老妇中文字幕| 爽爽淫人网| 欧美高清18A片| 91国产美女丝袜足交精品视频| www.91逼逼.com| 青青草AV色| 中亚精品极乱| 日韩中文字幕视频| 伊人96在线| 密桃99999| 中文字幕AV乱伦| 99热99re6国产在线播放| 色婷婷综合网| 激情 欧美 亚洲 小说| 超碰伊人在线| 久久国产三区| 懂色天天爱天天日天天射天天澡| 91日产桃蜜| 中文字幕av久久爽Av| 黑人嘿嘿嘿超爽免费视频| 亚洲精品欧洲色| 欧美在线大香蕉| 亚洲乱熟女一区二区三区大香蕉| 蜜臀久久99精品久久久电影| 97超碰这里只有精品| AA丁香综合激情| 成人无码在线超碰网| 亚洲91射| 97精品久久久久久久| 无码少妇精品一区二区60岁老人| 久久精品国产Aⅴ| 96久久久精品| 97AV爱| 风流老熟女一区二区三区l| 欧美性暴力| 久久偷偷色综合蜜桃| 久jiu久神马影院| 看一级特黄a大一片| 91人人操| 久久9999 | 国产中文福利| 六月丁香啪啪| 国产av强奸美女| 美女诱惑一区| 性欧美第一页| 91高跟美女在线播放| 天天干少妇| 亚洲最新a在线观看| 黄色免费一级在线毛片| 婷婷性网| 日韩综合97P| 91欧美偷拍| 天天射影院| 岛国黄色大片网站| 国产无码高清操逼视频| 超碰美国| 国产丁香精品露脸视频| 亚洲无限观看| 亚洲高清视频在线观看| 久久极品一区二区| 操逼日韩无码 | 99热在线播放| WWW黄片COM| 国产高清免费不卡av| 69视频入口| 亚洲资源站| 亚洲风情综合网| 午夜福利在线合集| 国模不卡一本二本三电影| 999日韩中文精品观看视频。| av一区二区三区 中文| 久久国产乱子伦精品免费女人| 翔田千里AV无码秘 三区| 男女啊啊啊| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 啊啊啊久久| 久久久亚洲熟妇资源| 污电影在线观看| 欧美亚洲se91| 99www.bibizy香蕉资源国产一区二区三区高清| 精品久久久久,69国产成人精| 色婷婷久久| 亚洲欧美经典一区二区| 国产精品无码论坛| 国产精品动态一区二区三区四四| 欧美激情超碰777| 熟妇人妻一区二区三区| 麻豆天美久久91| 五月黑AⅤ| 麻豆久久久一区二区| 天天日夜夜爽| 免费观看的av| 99色综合| 校园春色制服丝袜中文字亚洲| 五月丁香啪啪| 亚洲激情网一二三四区| 综合色图区| 精品久久久久,69国产成人精| 情侣开房子拍 日韩无码 女的很漂亮| 中文字幕一区av| 久久久久久久一级黄色打同平台| 午夜精品久久久久久久男人的天堂 | 香蕉99秘 精品一区丁香| 日韩偷拍色图| 精品人妻一区二区三区-国产| 国产精品国产自产拍高清AV| 久久久久久久久久久久久9999| 国产日韩精品一区二区三区| 中文字幕88av在线| 91处女视频在线观看| 99re99视频在线免费观看| 免费成人在线熟妇网| 日韩熟女视频二区| 91麻豆一二三区| 日韩一级欧美一级国产一级台湾| 中国人高清www色视频免费| 成人毛片免费| 中文字幕乱码人妻二区三区| 国产A v无码专区| 中国国国产一级特黄毛片| 久久久成人国产精品无码| 热九九精品| 久久黄黄| 一区二区三区蜜桃成人撸久久东京热| 欧美熟女妇同| 91N综合网在线| 国产日韩美女小穴视频网站不卡| 中文字幕成人乱码熟女精品国50| 狠狠爱综合网| 伊人丁香五月婷婷| 精品一二三区久久AAA片| 伊人久久婷婷| 91女人的网站| 亚洲熟久久| 欧美日韩中文字幕不卡| 国产精品人妻无码久久久互動交流| 久久久精品电影| 丝袜美腿制服人妻二区中文字幕| 成人国产精品三级A片| 欧洲综合视频| 亚洲999综合| 美女啊啊啊啊啊啊| 日韩精品国产一区二区| 亚洲AV成人无码一区二区三区在线观看 | 在线岛国新天堂8| 日本在线播放不卡一区| 中文高清一区二区的| 97这里只精品| 亚州性色| 亚洲无吗在线视频| 五月天婷婷色| 欧美熟妇亚洲版| 丝袜综合网| 欧美性生活免费网| www.99热| 精品无码人妻一区二区免费蜜桃| 97超碰欧美精品| 无码人妻精品一区二区中文| 狠狠色婷婷| 青青欧洲黑| 精品福利| 国产九九九九九九九九| 日本少妇va7777| 四虎884| 99久久精品欧美国产| 五月天婷婷基地| www.AV有限公司一区| 中国少妇啪啪视频| 国产欧美精选激情视频| 骚货人妻偷情自拍在线视频| 任我爽在线视频免费观看| 99久久久无码国产精品性啊聊| aaaa少妇高潮大片| 香一区二区三区| 0755午夜福利视频| 欧美午夜视频免费观看| 精品国产乱码久久久久久久久1 | av橘色网站| 亚洲三区视频| 嗯嗯啊啊操死我| 久久久啊啊啊| 51一区二区三区| 欧美熟女激情| 好吊色青靑草| 亚洲高清无码免费观看视频| 日韩精品电影| 国产91av在线播放| 91久久精品国产| 国产精品日日摸天天碰| 亚洲高清无码在线桃色| 综合网欧| 精品国产一区探花在线观看| 亚洲色五月| 久射吧| a v网站在线播放| 传媒免费一区二区三区| 中文字幕乱碼在线| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 国产精品蜜乳AV| 日本蜜桃| 国产美女销魂在线观看不卡| 色老汉色| 亚洲日韩人妻中文字幕一区| 欧美黑人性猛交91| 亚洲国产日韩精品久久久| **一级毛片国产| 懂色av中文字幕| 精品区国产区一区二区三区| 久久精品99久久久久久| 日韩av不卡在线看| 精品小视频在线| 国产视频一区二区三区在线免费观看 | 中国女人内射6XXXXX| 亚洲少妇色图自慰直播| 欧美日韩黄片精品在线| 国产精品。| 秋霞网—男女啪啪亚洲免费体验区| 无码一区二区三区四区五区六区七区八区九区十区视频 | 色情综合网| 校园春色亚洲色图| 中文字幕精品一区二区精品| 96精品久久| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 日韩天天本| 91搞逼视频| 情色五月天久久久| 嫩呦国产一区二区三区AV| 国产肏屁眼视频| 啪啪啪东京| 日欧毛片久久| 久久精品中文字幕无码l| 一区二区亚州激情久婷婷欧美| 图片区小说区| 精品在线78| 美女黄色一级A视频| 97在线免费观看视频| 青青草在线视频人人想人人上| av亚欧| 人妻 制服 日韩 中文 在线| 久久精品国产亚洲AV嘿嘿| 久久精品日韩专区免费观看| 综合网色| 综合另类| m欧洲一级午老| 人人摸人人干人人拍97| 91操熟女视频| 麻豆精品久久久久久久| 一区二区三区美女超清| 人妻 欧美 中文| 久久精视频美日韩在线视频| 麻豆熟妇乱妇熟色A片在线看| 色欧美天天| 激情黄色片在线观看| 大乔未久88一区| 色99视频| 国产精品点击进入在线影院高清| 亚洲第91页| 丰满的三级少妇欧美久久久| 韩国三级色呦呦| 亚洲色香| 玖玖色综合| 蜜乳成人AV| 性色高清..……| 天天综合~91入口| 日韩三A大片在线观看| 日本道日本道中文字幕日本道最新日本道在线观看 | 亚洲男人在线观看天堂| 亚洲色欲一区二区三区| 久久九九视频九九视频| 嗯嗯啊啊啊好爽| 青青草日本中文字幕| 美女被艹尤物视频| 中国一级αV| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 懂色AV蜜臀无码精品APP| 日韩小电影| 伊人亚洲综合| 欧美精品另类人妖xxxx| 东北丰满熟女国产一区| 国内一级精品| www.91欧美| 精品国产一区二区三区av在线资源| 亚洲色欲天天天堂色欲网女| 91精品在线播放| 99国产精品久久久久久久成人热| 中日高清无码操逼视频| 日日干天天干夜夜爽| 亚洲欧美天| 青青操少妇| 伊人AAA| 国产女人操逼视频| WWW.操逼.COM| 亚洲色欧| 欧洲精品一二三在线| 日本久操视频| 欧美综合区| 精品人妻中文字幕4399| 9Ⅰ老熟女| 综合情欲网| 亚洲视频一二区| 国产久久一区二区午夜| 亚洲天堂无码| 性爱乱伦视频免费| 精品人妻一二三| 老熟女天天操| 激情视屏国产乱伦强奸| 91亚洲高清| 亚洲天堂电影网99999| a人欧美综合天堂麻豆| 亚欧精品久久久久久久久久久| 在线无码操| 日韩在线一区高清在线| 国产资源中文字幕在线| 日韩大香蕉AV影片| 啊啊啊啊啊舒服| 白丝少妇一区二区| 1区2区3区在线视频| 大香蕉av在线| 一区三区啪啪| 中文字幕精品日韩中文字幕| 成人无码在线视频网站| 懂色Av| 国产精品诱惑| 无套后入双马尾| 桑老女人九区| 天操天操夜操夜月月年年操操| 久久大陆| 亚洲精品国产精品乱码不卡| 91色爽欧美| 一牛影视久久久一区二区三区| 资源在线观一 二| 人妻AV在线| 亚洲综合婷婷| 国产欧美日韩在线不卡第一页| 91社区伊人| 91在线无码精品秘 软件| 北京美女一区二区| 久操av在线| 亚洲小电影免费涩涩成人在线高清 | 国产11页| 免费看毛片操穴| 99综合视频一体| 婷婷导航| 天天日日夜夜| 婷婷五月天小说| 一区二区你上我| 韩国久久97| 殴美牲| 天天摸夜夜摸| 亚洲日韩青青草色月| 少妇一区二区三区在线观看| 蜜臀亚洲中文| 啊啊啊不要啊啊受不了了视频在线| 日韩人妻无码精品系列| 日本五十路在线| 免费看国产大AB| 后入式福利| 大鸡巴久久| 亚洲精品久久久久久久蜜桃臀| av网站免费看| 亚洲 中文字幕 精品| 日韩精品色呦呦| 污污汅18禁网站在线永久免费观看 | 亚洲乱熟女一区二区三区大香蕉| 97色论| 嗯嗯,好大,好爽,好骚 | 亚洲做性| 天天射夜夜骑| 97亚洲精品| 涩综合导航| 日韩激情小说一区二区| 国产亲戚伦亲在线| 亚洲色诱惑| 99re这里只有精品中心播放| 久久超碰亚洲人| 黑人精品久久97| 97精品人妻一二三四| 国产伦精品| 亚洲啪啪视频免费| 久草国产在线视频| 久久久国产三级黄色片| 国产乱码久久| 伊人伊人LD| 日韩欧美麻豆 | 亚洲人精品午夜不卡| 欧美综合色图片| 亚洲人妻在线精品| 亚洲欧洲综合成人av一区| 亚洲最大网站av| 爱爱动态120秒| 美女主播色欲91抠b在线播放| 国产亚洲日本| 久久三区四区| 激情黄色片在线观看| 艹少妇网站| 精品久久久久久亚洲| 97日视频| 青青青在线高清视频在线一二三四区 | 国产操逼网站亚洲一级黄色| 激情无码日韩| 婷婷色中文字幕| 蜜臀在线免费观看在线免费观看| 欧洲精品一二三在线| 熟妇色99| 国模不卡| 91国产精品在线看| 麻豆精品天美| 人人操人人肉久久精品| 97色碰| 国产粉嫩出水在线播放| 欧美日韩情色一区二区| 欧美综合网1|