亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數(shù)據(jù)庫 > PostgreSQL > 正文

PostgreSQL7.0手冊-接口-54. libpq - C++ 綁定庫

2019-09-08 23:34:13
字體:
供稿:網(wǎng)友
第五十四章. libpq - C++ 綁定庫
內(nèi)容 
控制和初始化 
libpq++ 類 
數(shù)據(jù)庫聯(lián)接函數(shù) 
查詢執(zhí)行函數(shù) 
異步通知 
F與 COPY 命令Command 
libpq++ 是 Postgres 的 C++ API?。ń涌冢?。libpq++ 是一個 C++ 類的集合,這些類允許客戶端程序與 Postgres 后端服務(wù)器進行聯(lián)接。聯(lián)接有兩種形式:一個數(shù)據(jù)庫類和一個大對象類?!?
數(shù)據(jù)庫類用于操作數(shù)據(jù)庫,你可以向 Postgres 后端服務(wù)器發(fā)送任何 SQL 查詢并檢索服務(wù)器的返回?!?

大對象類用于操作數(shù)據(jù)庫中的大對象。盡管一個大對象實例可以給Postgres 后端發(fā)送正常的查詢,但通常只是用于那些不返回任何數(shù)據(jù)的簡單查詢。一個大對象應(yīng)該看作一個文件流。以后它應(yīng)該顯得更象 C++ 文件流 cin,cout 和 cerr。 

本章基于 libpq C 庫的文檔。本章的末尾有三個短程序列出來作為 libpq++ 編程的例子(盡管不是很好的編程例子)。在 src/libpq++/examples 里有好幾個 libpq++ 應(yīng)用的例子,包括本章的三個例子的源碼?!?

控制和初始化
環(huán)境變量
下面的環(huán)境變量可以在一個環(huán)境里設(shè)置缺省值以避免在應(yīng)用程序里面把數(shù)據(jù)庫名放到硬代碼里: 
  
注意:請參考 libpq - C 庫 獲取一個可用聯(lián)接選項的完整列表。
下面的環(huán)境變量可以用于選擇缺省的聯(lián)接參數(shù)值,這些值將被 PQconnectdb 或 PQsetdbLogin 使用--如果調(diào)用代碼沒有直接聲明相應(yīng)值的話.這些(環(huán)境變量)可以避免把麻煩的數(shù)據(jù)庫名強加入簡單的應(yīng)用程序的硬代碼里面?!?
注意:libpq++ 只使用環(huán)境變量或者 PQconnectdb conninfo 風(fēng)格的字串。
PGHOST 設(shè)置缺省的服務(wù)器名.如果聲明了一個非零長的字符串,將使用 TCP/IP 通訊.如果沒有主機名,libpq 將使用本地的Unix 域套接字. 
PGPORT 設(shè)置與 Postgres 后端通訊的缺省端口號或本地 Unix 主控套接字的文件擴展(文件標(biāo)識符). 

PGDATABASE 設(shè)置缺省的 Postgres 數(shù)據(jù)庫名. 

PGUSER 設(shè)置用于與數(shù)據(jù)庫聯(lián)接和用于認(rèn)證的用戶名. 

PGPASSWORD 如果后端要求口令認(rèn)證,設(shè)置使用的口令. 

PGREALM 設(shè)置與 Postgres 一起使用的 Kerberos?。绻撚蚺c本地域不同的話。如果設(shè)置了 PGREALM,Postgres 應(yīng)用將試圖用這個域(realm)與服務(wù)器進行認(rèn)證并且使用獨立的門票文件(ticket files)以避免與本地的門票文件沖突.只有在后端選擇了 Kerberos 認(rèn)證時才使用這個環(huán)境變量.(譯注:門票文件是 Kerberos 認(rèn)證協(xié)議中用于交換密鑰的一個文件/服務(wù)器。)

PGOPTIONS 為 Postgres 設(shè)置附加的運行時選項. 
PGTTY 設(shè)置后端調(diào)試信息顯示輸出的文件或者控制臺(tty).

下面的環(huán)境變量可以用于為每個 Postgres 會話聲明用戶級別的缺省特性: 
PGDATESTYLE 設(shè)置缺省的日期/時間表現(xiàn)形式. 
PGTZ 設(shè)置缺省的時區(qū).

下面的環(huán)境變量可以用于為每個 Postgres 會話聲明缺省的內(nèi)部特性: 
PGGEQO 為基因優(yōu)化器設(shè)置缺省模式.
參閱 SET SQL 命令獲取這些環(huán)境變量的正確值的信息. 

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

libpq++ 類
聯(lián)接類:PgConnection
聯(lián)接類與數(shù)據(jù)庫進行實際的聯(lián)接,被所有的訪問類繼承?!?
數(shù)據(jù)庫類:PgDatabase
數(shù)據(jù)庫類提供與一個服務(wù)器后端已聯(lián)接的 C++ 對象。要創(chuàng)建這樣的一個對象,我們首先需要用于訪問后端的環(huán)境。下面的構(gòu)造器處理從 C++ 程序里面訪問后端服務(wù)器的工作。

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

數(shù)據(jù)庫聯(lián)接函數(shù)
PgConnection 與一個后端服務(wù)器建議一個新聯(lián)接?!?
        PgConnection::PgConnection(const char *conninfo)
盡管典型的是從一個訪問類里面調(diào)用(此函數(shù)),與后端服務(wù)器的聯(lián)接很有可能是通過創(chuàng)建一個 PgConnection 對象實現(xiàn)的?!?
ConnectionBad 返回與一個后端服務(wù)器的聯(lián)接是否成功?!?

        int PgConnection::ConnectionBad()
如果聯(lián)接失敗返回 TRUE (真)?!?
Status 返回與一個后端服務(wù)器的聯(lián)接的狀態(tài)?!?

        ConnStatusType PgConnection::Status()
取決于聯(lián)接的狀態(tài),返回 CONNECTION_OK 或 CONNECTION_BAD?!?
PgDatabase 與后端服務(wù)器建立一個新聯(lián)接?!?

        PgDatabase(const char *conninfo)
在創(chuàng)建一個 PgDatabase 后,我們在向?qū)ο蟀l(fā)送查詢前要通過檢查來驗證與數(shù)據(jù)庫的聯(lián)接是否成功。這一點很容易通過使用 Status 或 ConnectionBad 方法檢索 PgDatabase 對象當(dāng)前的狀態(tài)來實現(xiàn)?!?
DBName 返回當(dāng)前數(shù)據(jù)庫的名稱。 

        const char *PgConnection::DBName()
Notifies 返回一個從后端收到的未處理通知信息列表里的下一條通知。 
        PGnotify* PgConnection::Notifies()
參閱 PQnotifies() 獲取細(xì)節(jié)。

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

查詢執(zhí)行函數(shù)
Exec 向后端服務(wù)器發(fā)送一個查詢??赡芪覀兏敢馐褂孟旅鎯蓚€函數(shù)之一?!?
        ExecStatusType PgConnection::Exec(const char* query)
返回查詢的結(jié)果。可能的狀態(tài)結(jié)果可以是下面的值: 
   
 PGRES_EMPTY_QUERY  
PGRES_COMMAND_OK,如果查詢是一條命令 
PGRES_TUPLES_OK,如果查詢成功返回記錄 
PGRES_COPY_OUT  
PGRES_COPY_IN  
PGRES_BAD_RESPONSE,如收到一個未知的響應(yīng) 
PGRES_NONFATAL_ERROR  
PGRES_FATAL_ERROR  

ExecCommandOk 向后端服務(wù)器發(fā)送一條命令查詢。 

        int PgConnection::ExecCommandOk(const char *query)
如果命令查詢成功返回 TRUE?!?
ExecTuplesOk 向后端服務(wù)器發(fā)送一條命令查詢。 

        int PgConnection::ExecTuplesOk(const char *query)
如果命令查詢成功返回 TRUE?!?
ErrorMessage 返回最后一條錯誤信息文本。 

        const char *PgConnection::ErrorMessage()
Tuples 返回查詢結(jié)果里記錄(實例)的條數(shù)?!?
        int PgDatabase::Tuples()
CmdTuples 返回在一次 INSERT,UPDATE 或 DELETE 后涉及的行數(shù).如果是其他命令,返回 -1. 
      int PgDatabase::CmdTuples()
Fields 返回查詢結(jié)果里每條記錄的數(shù)據(jù)域(字段)數(shù)。 
        int PgDatabase::Fields()
FieldName 返回與指定域索引相聯(lián)的域(字段)名稱。域索引從 0 開始計數(shù)?!?
        const char *PgDatabase::FieldName(int field_num)
FieldNum 返回與指定域(字段)名稱相聯(lián)的域索引?!?
        int PgDatabase::FieldNum(const char* field_name)
如果給出的名稱無法與任何域匹配返回 -1?!?
FieldType 返回與給出域索引相聯(lián)的域的類型。返回的整數(shù)是該類型的內(nèi)部編碼。域索引從 0 開始計數(shù)?!?

        Oid PgDatabase::FieldType(int field_num)
FieldType 返回與給出域名稱相聯(lián)的域的類型。返回的整數(shù)是該類型的內(nèi)部編碼。域索引從 0 開始計數(shù)?!?
        Oid PgDatabase::FieldType(const char* field_name)
FieldSize 返回與給出域索引相聯(lián)的域的以字節(jié)計算的尺寸。域索引從 0 開始計數(shù)?!?
        short PgDatabase::FieldSize(int field_num)
返回在數(shù)據(jù)庫記錄里面給該數(shù)據(jù)域分配的空間,換句話說就是該數(shù)據(jù)類型在服務(wù)器里的二進制形式的大?。ǔ叽纾绻摂?shù)據(jù)域是可變尺寸,返回 -1. 
FieldSize 返回與給出域名稱相聯(lián)的域的以字節(jié)計算的尺寸。域索引從 0 開始計數(shù)?!?

        short PgDatabase::FieldSize(const char *field_name)
返回在數(shù)據(jù)庫記錄里面給該數(shù)據(jù)域分配的空間,換句話說就是該數(shù)據(jù)類型在服務(wù)器里的二進制形式的大?。ǔ叽纾绻摂?shù)據(jù)域是可變尺寸,返回 -1. 
GetValue 返回一個 PGresult 里面的一條記錄的單獨的一個數(shù)據(jù)域(字段)的值.記錄和數(shù)據(jù)域索引從 0 開始. 

        const char *PgDatabase::GetValue(int tup_num, int field_num)
對大多數(shù)查詢而言,GetValue 返回的值是一個表示字段值的空(NULL)結(jié)尾的 ASCII 字符串.但是如果 BinaryTuples() 為 TRUE, GetValue 返回的值就是該類型在后端服務(wù)器內(nèi)部的二進制表現(xiàn)形式(但是不包括尺寸字--如果數(shù)據(jù)域是變長的).這樣,把數(shù)據(jù)轉(zhuǎn)換成對應(yīng)的 C 類型就是程序員的責(zé)任了. GetValue 返回的指針指向一個本身是 PGresult 結(jié)構(gòu)的一部分的存儲區(qū)域.我們不能更改它,并且如果我們要在 PGresult 結(jié)構(gòu)的生存期后還要使用它的話,我們必須顯式的把該數(shù)值拷貝到其他存儲器中.BinaryTuples() 還沒有實現(xiàn)?!?
GetValue 返回一個 PGresult 里面的一條記錄的單獨的一個數(shù)據(jù)域(字段)的值.記錄和數(shù)據(jù)域索引從 0 開始. 

        const char *PgDatabase::GetValue(int tup_num, const char *field_name)
對大多數(shù)查詢而言,GetValue 返回的值是一個表示字段值的空(NULL)結(jié)尾的 ASCII 字符串.但是如果 BinaryTuples() 為 TRUE, GetValue 返回的值就是該類型在后端服務(wù)器內(nèi)部的二進制表現(xiàn)形式(但是不包括尺寸字--如果數(shù)據(jù)域是變長的).這樣,把數(shù)據(jù)轉(zhuǎn)換成對應(yīng)的 C 類型就是程序員的責(zé)任了. GetValue 返回的指針指向一個本身是 PGresult 結(jié)構(gòu)的一部分的存儲區(qū)域.我們不能更改它,并且如果我們要在 PGresult 結(jié)構(gòu)的生存期后還要使用它的話,我們必須顯式的把該數(shù)值拷貝到其他存儲器中.BinaryTuples() 還沒有實現(xiàn)?!?
GetLength 返回以字節(jié)計的數(shù)據(jù)域(字段)的長度.記錄和數(shù)據(jù)域索引從 0 開始. 

        int PgDatabase::GetLength(int tup_num, int field_num)
這是某一特定數(shù)據(jù)值的實際數(shù)據(jù)長度,也就是由 GetValue 指向的對象的尺寸.注意,對于 ASCII 代表的數(shù)值,這個尺寸與 PQfsize 報告的二進制尺寸無關(guān). 
GetLength 返回以字節(jié)計的數(shù)據(jù)域(字段)的長度.記錄和數(shù)據(jù)域索引從 0 開始. 

        int PgDatabase::GetLength(int tup_num, const char* field_name)
這是某一特定數(shù)據(jù)值的實際數(shù)據(jù)長度,也就是由 GetValue 指向的對象的尺寸.注意,對于 ASCII 代表的數(shù)值,這個尺寸與 PQfsize 報告的二進制尺寸無關(guān). 
DisplayTuples 向指定輸出流打印所有記錄和(可選的)字段名?!?

        void PgDatabase::DisplayTuples(FILE *out = 0, int fillAlign = 1, 
        const char* fieldSep = "|",int printHeader = 1, int quiet = 0)
PrintTuples 向指定輸出流打印所有記錄和(可選的)字段名?!?
        void PgDatabase::PrintTuples(FILE *out = 0, int printAttName = 1, 
        int terseOutput = 0, int width = 0)
GetLine 
        int PgDatabase::GetLine(char* string, int length)
PutLine 
        void PgDatabase::PutLine(const char* string)
OidStatus 
        const char *PgDatabase::OidStatus()
EndCopy 
        int PgDatabase::EndCopy()

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

異步通知
Postgres 支持通過 LISTEN 和 NOTIFY 命令產(chǎn)生的異步通知.一個后端用 LISTEN 命令注冊一個它感興趣的信號燈.所有正在監(jiān)聽某一命名信號燈的后端在該條件名的 NOTIFY (通知)被另一個后端執(zhí)行后都將被異步地通知.沒有附加的信息從通知發(fā)出者傳遞到通知接收者.因此,很典型地,任何實際的需要被傳遞的數(shù)據(jù)都是通過一個數(shù)據(jù)庫關(guān)系傳遞的.通常條件名是與相關(guān)聯(lián)的關(guān)系同名,但是并不是一定要與某個關(guān)系相關(guān)才行. 
注意:以前,本文檔把用于異步通知的名稱與關(guān)系或者表相聯(lián)。但實際上在這兩個概念的實現(xiàn)上沒有任何直接的聯(lián)系,因而實際上命名信號燈不需要象以前定義的那樣與對應(yīng)的關(guān)系相關(guān)聯(lián)。
libpq++ 應(yīng)用在與之相聯(lián)的后端收到一個異步通知時將被通知。不過,從后端到前端的通訊不是異步的。libpq++ 應(yīng)用必須輪詢后端以便查找是否有待處理的信息。在一個查詢執(zhí)行完畢后,前端可以調(diào)用 PgDatabase::Notifies 來判斷目前是否有從后端來的任何通知數(shù)據(jù)。PgDatabase::Notifies 從一個來自后端的未處理通知列表里返回一個通知。如果沒有來自后端的待處理的通知,該函數(shù)返回 NULL。PgDatabase::Notifies 的表現(xiàn)想一個彈出棧。一旦從 PgDatabase::Notifies 返回了一個通知,該通知就被認(rèn)為已處理并且被從通知列表里刪除?!?
PgDatabase::Notifies 從服務(wù)器里檢索待處理通知?!?
  

        PGnotify* PgDatabase::Notifies()
第二個例子程序給出了一個使用異步通知的例子。

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

與 COPY 命令向關(guān)聯(lián)的函數(shù)
Postgres 里的 copy 命令里有用于 libpq++ 里從網(wǎng)絡(luò)聯(lián)接讀出或者寫入的選項.因此,這些函數(shù)有必要直接訪問網(wǎng)絡(luò)聯(lián)接,以便應(yīng)用可以充分利用這個功能. 
PgDatabase::GetLine 讀取一個以回車符(換行符)結(jié)尾的字符行中 length 字節(jié)的字符(由后端服務(wù)器傳輸)到一個字符串緩沖區(qū) string 里. 
        int PgDatabase::GetLine(char* string, int length)
類似 Unix 系統(tǒng)過程 fgets(3),這個過程拷貝最多 length-1 個字符到字符串 string 里.但是它會象 gets(3) 那樣把結(jié)尾的換行符轉(zhuǎn)換成一個空字符(null)?!?
PgDatabase::GetLine 在碰到文件結(jié)束時返回 EOF,如果整行都被讀取了返回 0,如果緩沖區(qū)填滿了而還沒有遇到結(jié)束的換行符則返回 1. 

注意,應(yīng)用程序必須檢查新行是否包含單個句點("."),這表明后端服務(wù)器已經(jīng)完成了 copy 命令結(jié)果的發(fā)送。因此,如果應(yīng)用預(yù)計接收超過 length-1 字符長的行,應(yīng)用就必須保證仔細(xì)地檢查PgDatabase::GetLine 的返回值?!?

PgDatabase::PutLine 發(fā)送一個空結(jié)尾的 string 到后端服務(wù)器。 

        void PgDatabase::PutLine(char* string)
應(yīng)用必須顯式的發(fā)送一個句點字符(".")告訴后端它已經(jīng)完成它的數(shù)據(jù)發(fā)送?!?
  
PgDatabase::EndCopy 與后端同步?!?

        int PgDatabase::EndCopy()
這個函數(shù)等到后端完成 copy(才返回?).你可以在用 PgDatabase::PutLine 向后端發(fā)送完最后一個字符串后或者用 PgDatabase::GetLine 從后端獲取最后一行字符串后調(diào)用它.我們必須調(diào)用這個函數(shù),否則后端可能會和前端“丟失同步”。在這個函數(shù)返回后,后端就已經(jīng)準(zhǔn)備好接收下一個查詢了。 
成功時返回 0,否則返回非零值。

一個例子: 
PgDatabase data;
data.Exec("create table foo (a int4, b char(16), d float8)");
data.Exec("copy foo from stdin");
data.PutLine("3/tHello World/t4.5/n");
data.PutLine("4/tGoodbye World/t7.11/n");
&...
data.PutLine("http://./n");
data.EndCopy();

--------------------------------------------------------------------------------
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

人妻与黑人一区二区三区| 污污视频在线免费| 黑人精品欧美一区二区蜜桃| 欧美日韩在线三区| 久久久国产精品x99av| 亚洲一二三区视频在线观看| 青青视频在线观| 国产精品国产三级国产三级人妇| 亚洲国产午夜精品| 丝袜老师在线| 91偷拍精品一区二区三区| 2025中文字幕| 97超碰蝌蚪网人人做人人爽| 国产精品1区二区.| 日产欧产va高清| www.成人影院| 99精品视频在线免费播放| аⅴ资源新版在线天堂| 91人妻一区二区三区蜜臀| 成人av动漫| 色一情一区二区| 国产伦精品一区二区三区视频黑人| 五月婷婷丁香在线| 久久久一区二区三区捆绑**| 400部精品国偷自产在线观看| 欧美成人高清在线| 国产精品极品美女在线观看| 欧美xxxx老人做受| 日韩高清在线观看| 免费一级欧美片在线观看网站| 91黑丝在线| 国产亚洲精品综合一区91| 成人在线看片网站| 国产丰满美女做爰| 国产精品111| 在线成人免费视频| 麻豆成全视频免费观看在线看| 1024成人| 欧美大片在线观看| 六月丁香久久丫| 亚洲午夜电影在线观看| 五月开心六月丁香综合色啪| 欧美日本一区二区在线观看| 91超碰在线播放| 群体交乱之放荡娇妻一区二区| 日本69式三人交| 国产精品91久久久| 男生操女生视频在线观看| 久久av无码精品人妻系列试探| 成视频免费观看在线看| 91久久久久久久久久久久| 黄色精品网站| 成人福利网址| 国产精品亚洲一区二区在线观看| 影音先锋男人看片资源| 8x福利精品第一导航| 国产网友自拍电影在线| 91精品999| 精品一区二区三区视频在线观看| 久久美女免费视频| 国产午夜小视频| 日韩亚洲欧美精品| 国产一区三区三区| 亚洲а∨天堂久久精品9966| 国产欧美成人xxx视频| 91超碰这里只有精品国产| 亚洲九九九在线观看| 国产九一视频| 91精品中文在线| 亚洲第一色中文字幕| 四虎成人精品免费影院| 久久久久久亚洲精品杨幂换脸| 老司机凹凸av亚洲导航| 久久国产美女视频| 久久99精品国产自在现线| 色伊人久久综合中文字幕| 国产乱人伦精品一区二区| xxx在线视频| 日本成片免费高清| 在线观看xxx| 毛茸茸free性熟hd| 成人精品一区二区不卡视频| 亚洲一区二区国产| 秋霞影视一区二区三区| 国产免费不卡av| 91精品久久久久久蜜桃| 91丝袜超薄交口足| 久久久无码人妻精品无码| 在线观看 中文字幕| 天天综合国产| 日韩精品二区| 最近日本中文字幕| 四虎国产精品永久地址998| 在线成人一区二区| 欧美日韩在线精品一区二区三区激情综| 五月综合激情| 在线视频一二区| 欧美综合欧美视频| 亚洲视屏一区| 国产青青草视频| 日韩精品一区二区三区不卡| 欧美精品久久久久久久自慰| 亚洲成人黄色网址| 91在线观看免费视频| 欧美日本啪啪无遮挡网站| 欧美成人福利在线观看| 在线观看视频免费一区二区三区| 日韩久久一区| 看全色黄大色大片| 91精品国产高清一区二区三蜜臀| 国产成人高潮免费观看精品| 免费久久久一本精品久久区| 国产在线视频在线| 秋霞影院一区二区三区| 中文字幕色婷婷在线视频| 中文字幕人妻一区二区在线视频| 午夜视频在线免费播放| 久久国产成人午夜av影院宅| 亚洲影院污污.| 久久综合偷偷噜噜噜色| 亚洲成色www久久网站| 亚洲精品写真福利| 日韩和欧美的一区二区| 成人h版在线观看| 天天干天天爽| 欧美另类videos黑人极品| 国产成人av影视| 国外成人在线视频| 欧美午夜性视频| a在线免费观看| 成人羞羞网站入口| 免费观看在线综合色| 国产精品入口免费视| 同性恋视频一区| 不卡的av中国片| 国产喷水吹潮视频www| 亚洲一二三区视频在线观看| 日韩中文字幕高清在线观看| 亚洲成人影院在线观看| 国产精品女主播一区二区三区| 久久都是精品| 国产精品一二三区在线观看| 国产精品久久久久久久久免费樱桃| а天堂中文最新一区二区三区| 夜夜摸视频网| 无码人妻一区二区三区免费n鬼沢| 亚洲成人最新网站| xfplay5566色资源网站| 熟妇无码乱子成人精品| 特级西西人体高清大胆| 亚洲视频免费在线| 成人av资源网站| 国产美女免费观看| 成人区精品一区二区不卡| 亚洲成人中文在线| 香港三级韩国三级日本三级| 原创真实夫妻啪啪av| 成人av电影在线观看| 虎白女粉嫩尤物福利视频| 成人国产一区二区三区精品麻豆| 国产精品刘玥久久一区| 久久免费视频1| 欧美视频久久久| 免费看涩涩视频| 天天综合网在线观看| 精品久久国产字幕高潮| 圆产精品久久久久久久久久久| 国产精品美女久久久久av福利| 国产乱子精品一区二区在线观看| 国产亚洲欧洲一区高清在线观看| 经典三级久久| 国产精品极品| 精品久久久久久久久久久久久久久久久| 久久久久久久久久久久久久免费看| 在线免费观看日韩欧美| 亚洲 欧美 国产 另类| 亚洲天堂av综合网| 青草青青国产| 国产资源在线观看入口av| 黄在线观看在线播放720p| 综合国产视频| 久久6免费视频| 久久精品国产亚洲AV无码男同| 欧美亚洲伦理www| 国产精品日韩专区| 亚洲一区二区三区在线观看视频| 中文字幕jux大岛优香| 成人疯狂猛交xxx| 日韩美女视频在线观看| 午夜国产精品理论片久久影院| 99av国产精品欲麻豆| av小说天堂网| 毛葺葺老太做受视频| 久久中文资源| 国产精品天天操| 亚洲精品精品一区| 国产日韩久久久| 97av在线视频| 加勒比精品视频| 福利电影一区二区| 欧美性大战久久| 久久国产精品99久久久久久老狼| 激情久久婷婷| 激情五月俺来也| 亚洲女同志亚洲女同女播放| 亚洲理论在线| av一本久道久久综合久久鬼色| 亚洲午夜天堂| 丝袜亚洲另类欧美| 国产精品一区二区三区四区| 国产99久久九九精品无码免费| 国产奶头好大揉着好爽视频| 91精品国产丝袜白色高跟鞋| 无码精品人妻一区二区| 18成人免费观看视频| 欧美福利网址| 九一免费看片| 99re热这里只有精品视频| 欧美一级电影久久| 久久久精品国产sm调教| 日韩精品中文字幕视频在线| 日韩在线国产精品| 亚洲色图15p| www.99色| 亚洲国产精品自拍视频| 欧美色黄视频| jizzjizzjizz在线观看| 久久久久久久久99| 国产成人小视频在线观看| 欧美裸体男粗大视频在线观看| 欧美一区二区激情视频| 麻豆国产精品777777在线| 国产黄色一区二区| 中文字幕国内精品| 欧美另类女人| 国产高清精品一区二区三区| 日韩免费在线观看| 四虎成人影院网址| 亚洲白拍色综合图区| 高清电影在线免费观看| 国产剧情日韩欧美| 精品人妻一区二区三区浪潮在线| 黄色激情网站| 四虎国产精品永久| 先锋影音在线播放av| 国产福利资源在线| 成人欧美在线视频| 68精品国产免费久久久久久婷婷| 特大巨黑人吊性xxxxn38| 欧美人妻精品一区二区免费看| 中文字幕在线免费看| segui88久久综合9999| 亚洲欧美另类在线观看| 亚洲av成人无码久久精品老人| 欧美精品一二三| 日韩av免费观影| 日韩一区二区三区视频在线观看| 星空无限传媒在线| 久久久久欧美精品| 日韩电影免费在线看| www.黄色网址.com| 97涩涩爰在线观看亚洲| 中文字幕在线观看一区二区| 电影天堂av在线| 久久精品国产秦先生| 91精品丝袜国产高跟在线| 97se亚洲国产一区二区三区| 国产91久久婷婷一区二区| 人人干人人插| 好爽好深好紧好大| 亚洲一级片在线播放| 欧美巨乳在线观看| 91啪亚洲精品| 亚洲成人av福利| 国产情侣高潮对白| 日韩精品在线中文字幕| 国产欧美视频一区二区| 国产精品三级av在线播放| 在线看黄网站| 亚洲久久久久久久| 国产精品国产自产拍高清av水多| 伊人久久大香线蕉成人综合网| 国产69精品久久久久久久| 日韩aaaa| 一区国产精品视频| 国产无遮无挡120秒| 久久综合久中文字幕青草| 亚洲国产综合在线观看| 日韩视频永久免费观看| 九色网友自拍视频手机在线| av免费观看不卡| 欧美人妖在线观看| 久久久精彩视频| 亚洲精品一区二区在线播放∴| 狠狠狠综合7777久夜色撩人| 国产成人精品国内自产拍免费看| 免费a级片在线观看| 欧美日韩最好看的视频| 一区二区三区四区在线| 欧美一区二区.| 97人妻天天摸天天爽天天| 懂色av粉嫩av蜜臀av一区二区三区| 日本中文字幕在线2020| 久久免费在线观看视频| 日韩在线视频网址| 黄色亚洲在线| 黄色亚洲大片免费在线观看| 色婷婷狠狠五月综合天色拍| 欧美精品久久久久久久久25p| 欧美13一14另类| 国产福利精品一区二区| 色涩成人影视在线播放| 亚洲性生活大片| 人人妻人人澡人人爽| eeuss影院www在线观看免费| 久艹在线观看视频| 天堂在线观看一卡二卡三卡四卡| 中文字幕人妻熟女人妻a片| 久久婷婷蜜乳一本欲蜜臀| 欧美在线一级视频| 成人做爰视频www网站小优视频| jizz免费观看视频| 国产成人午夜性a一级毛片| 中国色在线观看另类| 51vv免费精品视频一区二区| 国产欧美在线观看| 欧美群妇大交群的观看方式| 亚洲精品国产嫩草在线观看|