精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

借助JDBC元數(shù)據(jù)API,發(fā)現(xiàn)數(shù)據(jù)庫(kù)元數(shù)據(jù)

譯文
數(shù)據(jù)庫(kù) MySQL
本文試圖探究JDBC元數(shù)據(jù)API的一些關(guān)鍵特性,以便有助于發(fā)現(xiàn)數(shù)據(jù)庫(kù)元數(shù)據(jù)。

【51CTO.com快譯】元數(shù)據(jù)基本上是指這類數(shù)據(jù),提供關(guān)于其他一些數(shù)據(jù)的結(jié)構(gòu)化描述。從程序員的角度來(lái)看,數(shù)據(jù)庫(kù)元數(shù)據(jù)是指關(guān)于數(shù)據(jù)庫(kù)數(shù)據(jù)的數(shù)據(jù),或者更準(zhǔn)確地說(shuō),是關(guān)于表、視圖、列類型、列名稱、結(jié)果集、存儲(chǔ)過(guò)程和數(shù)據(jù)庫(kù)的信息。Java的JDBC元數(shù)據(jù)API提供了通過(guò)Java代碼檢索該信息的手段。Java元數(shù)據(jù)信息尤其有助于編寫可以適應(yīng)幾個(gè)數(shù)據(jù)庫(kù)系統(tǒng)或適應(yīng)任何數(shù)據(jù)庫(kù)內(nèi)容的代碼。這意味著,創(chuàng)建一類泛型接口,使用高級(jí)數(shù)據(jù)庫(kù)功能,在運(yùn)行時(shí)發(fā)現(xiàn)數(shù)據(jù)庫(kù)元數(shù)據(jù)。本文試圖探究JDBC元數(shù)據(jù)API的一些關(guān)鍵特性,以便有助于發(fā)現(xiàn)數(shù)據(jù)庫(kù)元數(shù)據(jù)。

元數(shù)據(jù)的使用

JDBC元數(shù)據(jù)API可用于檢索關(guān)于數(shù)據(jù)庫(kù)的下列信息:

  • 數(shù)據(jù)庫(kù)用戶、表、視圖和存儲(chǔ)過(guò)程
  • 數(shù)據(jù)庫(kù)模式和目錄信息
  • 表、視圖和列權(quán)限
  • 關(guān)于表的主密鑰或外來(lái)密鑰的信息

JDBC概況

JDBC為客戶機(jī)應(yīng)用程序提供了必要的API,以便借助元數(shù)據(jù)類,發(fā)現(xiàn)關(guān)于數(shù)據(jù)庫(kù)和任何特定結(jié)果集(ResultSet)的信息。

 

 

圖1:JDBC概況

API涉及為客戶機(jī)提供元數(shù)據(jù)信息服務(wù)的幾個(gè)接口。客戶機(jī)通過(guò)JDBC驅(qū)動(dòng)程序管理器(JDBC Driver Manager),檢索該信息。驅(qū)動(dòng)程序管理器充當(dāng)實(shí)際數(shù)據(jù)庫(kù)和API之間的接口。針對(duì)特定廠商的數(shù)據(jù)庫(kù)提供了自己的Java驅(qū)動(dòng)程序(類型4驅(qū)動(dòng)程序)。比如說(shuō),MySQL提供了Connector/J;甲骨文或PostgreSQL等其他數(shù)據(jù)庫(kù)有各自的JDBC驅(qū)動(dòng)程序。在數(shù)據(jù)庫(kù)廠商不提供任何驅(qū)動(dòng)程序(類型4)的情況下,Java IDBC/ODBC Bridge可充當(dāng)?shù)讓覱DBC驅(qū)動(dòng)程序和驅(qū)動(dòng)程序管理器之間的中介。不管在什么情況下,檢索數(shù)據(jù)庫(kù)元數(shù)據(jù)信息的方法都是一樣的。

JDBC元數(shù)據(jù)API

JDBC API提供了檢索元數(shù)據(jù)信息的兩個(gè)關(guān)鍵接口:DatabaseMetaData和ResultSetMetaData。這兩個(gè)接口是java.sql程序包的一部分。DatabaseMetaData主要用于檢索關(guān)于數(shù)據(jù)庫(kù)的信息,比如其功能和結(jié)構(gòu)。另一方面,ResultSetMetaData用于獲得關(guān)于SQL查詢的信息,比如關(guān)于其大小和列類型的信息。所以,JDBC元數(shù)據(jù)API的關(guān)鍵要素如下:

DatabaseMetaData

該接口通常由數(shù)據(jù)庫(kù)廠商來(lái)實(shí)施,與原生JDBC驅(qū)動(dòng)程序一道提供。原生JDBC驅(qū)動(dòng)程序建立在數(shù)據(jù)庫(kù)上面。通過(guò)實(shí)施該接口,數(shù)據(jù)庫(kù)廠商提供了關(guān)于整個(gè)數(shù)據(jù)庫(kù)的綜合信息,比如表名稱、索引、產(chǎn)品名稱和版本等信息。該接口中聲明了許多方法,以便檢索與數(shù)據(jù)庫(kù)有關(guān)的各種元數(shù)據(jù)信息。

簡(jiǎn)短例子

  1. package org.mano.example; 
  2.  
  3. import java.sql.Connection; 
  4. import java.sql.DatabaseMetaData; 
  5. import java.sql.DriverManager; 
  6. import java.sql.SQLException; 
  7.  
  8. public class DatabaseMetaDataDemo { 
  9.  
  10.    private static final String URL = 
  11.       "jdbc:mysql://localhost:3306/addressbook? 
  12.       zeroDateTimeBehavior=convertToNull"; 
  13.    private static final String USERNAME = "testuser"
  14.    private static final String PASSWORD = "secret"
  15.  
  16.    public static void main(String[] args) { 
  17.       Connection conn = null
  18.       DatabaseMetaData dbmd = null
  19.       try { 
  20.          conn = DriverManager.getConnection(URL, USERNAME, 
  21.             PASSWORD); 
  22.          dbmd = conn.getMetaData(); 
  23.          if (dbmd != null) { 
  24.             System.out.println("Database Version: " + 
  25.                dbmd.getDatabaseProductVersion()); 
  26.             System.out.println("Driver Name: " + 
  27.                dbmd.getDriverName()); 
  28.             System.out.println("Driver Version: " + 
  29.                dbmd.getDriverVersion()); 
  30.             System.out.println("URL: " + 
  31.                dbmd.getURL()); 
  32.             System.out.println("User Name: " + 
  33.                dbmd.getUserName()); 
  34.             System.out.println( 
  35.                (dbmd.supportsANSI92FullSQL() ? 
  36.                "ANSI92FullSQL supported." : 
  37.                "ANSI92FullSQL not supported.")); 
  38.             System.out.println( 
  39.                (dbmd.supportsTransactions() ? 
  40.                "Transaction supported." : 
  41.                "Transaction not supported.")); 
  42.          } else { 
  43.             System.out.println("Metadata not supported"); 
  44.          } 
  45.       } catch (SQLException ex1) { 
  46.          System.err.println(ex1); 
  47.       } finally { 
  48.          try { 
  49.             conn.close(); 
  50.          } catch (SQLException ex2) { 
  51.  
  52.          } 
  53.       } 
  54.    } 

ResultSetMetaData

該接口提供了關(guān)于ResultSet對(duì)象結(jié)構(gòu)的元數(shù)據(jù)信息,比如搞清楚列數(shù)量、名稱、類型和長(zhǎng)度、表名稱、列是可讀/可寫還是可搜索等。

簡(jiǎn)短例子

  1. package org.mano.example; 
  2.  
  3. import java.sql.Connection; 
  4. import java.sql.DriverManager; 
  5. import java.sql.ResultSet; 
  6. import java.sql.ResultSetMetaData; 
  7. import java.sql.SQLException; 
  8. import java.sql.Statement; 
  9.  
  10. public class ResultSetMetaDataDemo { 
  11.  
  12.    private static final String URL = 
  13.       "jdbc:mysql://localhost:3306/addressbook? 
  14.       zeroDateTimeBehavior=convertToNull"; 
  15.    private static final String USERNAME = "testuser"
  16.    private static final String PASSWORD = "secret"
  17.    private static final String SQL = 
  18.       "SELECT * FROM Addresses"
  19.  
  20.    public static void main(String[] args) { 
  21.       Connection conn = null
  22.       Statement stmt = null
  23.       ResultSet rs = null
  24.       ResultSetMetaData rsmd = null
  25.  
  26.       try { 
  27.          conn = DriverManager.getConnection(URL, 
  28.             USERNAME, PASSWORD); 
  29.          stmt = conn.createStatement(); 
  30.          rs = stmt.executeQuery(SQL); 
  31.          rsrsmd = rs.getMetaData(); 
  32.  
  33.          if (rsmd != null) { 
  34.             int cols = rsmd.getColumnCount(); 
  35.             System.out.println("Number of Columns: " + cols); 
  36.             System.out.println("Table Name: " + 
  37.                rsmd.getTableName(1)); 
  38.             System.out.println("Catalog Name: " + 
  39.                rsmd.getCatalogName(1)); 
  40.             System.out.println 
  41.                ("------------------------------------------"); 
  42.             for (int i = 1; i <= cols; i++) { 
  43.                System.out.println("Class Name: " + 
  44.                   rsmd.getColumnClassName(i)); 
  45.                System.out.println("Column Name: " + 
  46.                   rsmd.getColumnName(i)); 
  47.                System.out.println("Column Type Name: " + 
  48.                   rsmd.getColumnTypeName(i)); 
  49.                System.out.println 
  50.                   ("--------------------------------------"); 
  51.             } 
  52.          } else { 
  53.             System.out.println("ResultSetMetadata not supported"); 
  54.          } 
  55.  
  56.       } catch (SQLException ex1) { 
  57.          System.err.println(ex1); 
  58.       } finally { 
  59.          try { 
  60.             stmt.close(); 
  61.             rs.close(); 
  62.             conn.close(); 
  63.          } catch (SQLException ex2) { 
  64.  
  65.          } 
  66.       } 
  67.    } 

ParameterMetaData

ParameterMetadata對(duì)象用來(lái)檢索關(guān)于PreparedStatement對(duì)象中參數(shù)標(biāo)記的信息。元數(shù)據(jù)信息是指所用參數(shù)的類型和屬性,比如獲得完全合格的Java類名稱、參數(shù)數(shù)量、類型、列大小確定的指定精度等。

簡(jiǎn)短例子

  1. package org.mano.example; 
  2.  
  3. import java.sql.Connection; 
  4. import java.sql.DriverManager; 
  5. import java.sql.ParameterMetaData; 
  6. import java.sql.PreparedStatement; 
  7. import java.sql.SQLException; 
  8.  
  9. public class ParameterMetaDataDemo { 
  10.  
  11.    private static final String URL = "jdbc:mysql://localhost:3306/ 
  12.       addressbook?zeroDateTimeBehavior=convertToNull"; 
  13.    private static final String USERNAME = "testuser"
  14.    private tatic final String PASSWORD = "secret"
  15.    private static final String SQL = "SELECT id, firstName, lastName 
  16.       FROM Addresses WHERE id=? AND firstName LIKE ?"; 
  17.  
  18.    public static void main(String[] args) { 
  19.  
  20.       Connection conn = null
  21.       PreparedStatement pstmt = null
  22.       ParameterMetaData pmd = null
  23.  
  24.       try { 
  25.          conn = DriverManager.getConnection(URL, 
  26.             USERNAME, PASSWORD); 
  27.          pstmt = conn.prepareStatement(SQL); 
  28.          pmd = pstmt.getParameterMetaData(); 
  29.          if (pmd != null) { 
  30.             System.out.println("Parameter Count: " + 
  31.                pmd.getParameterCount()); 
  32.          } else { 
  33.             System.out.println("ParameterMetadata not 
  34.                supported by the database"); 
  35.          } 
  36.  
  37.       catch (SQLException ex1) { 
  38.          System.err.println(ex1); 
  39.       } finally { 
  40.          try { 
  41.             pstmt.close(); 
  42.             conn.close(); 
  43.          } catch (SQLException ex2) { 
  44.  
  45.          } 
  46.       } 
  47.    } 

RowSetMetaData接口是javax.sql程序包的一部分,也是ResultSetMetaData接口的子實(shí)現(xiàn)。這類對(duì)象提供了RowSet對(duì)象中列的信息。RowSet接口為JavaBeans組件模型提供了支持JDBC API的功能。因而,它有屬性,可支持JavaBeans事件通知方法。RowSetMetadata提供了關(guān)于RowSet對(duì)象中列的信息,可以用來(lái)查明行集中所含列的數(shù)量,或每一列所含數(shù)據(jù)的類型。了解RowSet對(duì)象的工作機(jī)制至關(guān)重要,以便完全了解RowSetMetaData的使用。描述rowset機(jī)制不在本文探討范圍之內(nèi);不過(guò),讀者可能會(huì)喜歡這篇文章《使用JDBC RowSet API》(http://www.developer.com/java/working-with-the-jdbc-rowset-api.html),大致了解Rowset API。然而,這并不阻止我們大致看一下RowSetMetaData的實(shí)際使用。

簡(jiǎn)短例子

  1. package org.mano.example; 
  2.  
  3. import java.sql.SQLException; 
  4.  
  5. import javax.sql.RowSetMetaData; 
  6. import javax.sql.rowset.WebRowSet; 
  7.  
  8. import com.sun.rowset.WebRowSetImpl; 
  9.  
  10. public class RowSetMetaDataDemo { 
  11.  
  12.    private static final String URL = "jdbc:mysql://localhost:3306/ 
  13.       addressbook?zeroDateTimeBehavior=convertToNull"; 
  14.    private static final String USERNAME = "testuser"
  15.    private static final String PASSWORD = "secret"
  16.    private static final String SQL = "SELECT * FROM Addresses"
  17.  
  18.    public static void main(String[] args) { 
  19.       WebRowSet rowSet = null
  20.       RowSetMetaData rsmd = null
  21.  
  22.       try { 
  23.          Class.forName("com.mysql.jdbc.Driver"); 
  24.          rowSet = new WebRowSetImpl(); 
  25.          rowSet.setUrl(URL); 
  26.          rowSet.setUsername(USERNAME); 
  27.          rowSet.setPassword(PASSWORD); 
  28.          rowSet.setCommand(SQL); 
  29.          rowSet.execute(); 
  30.  
  31.          rsmd = (RowSetMetaData) rowSet.getMetaData(); 
  32.          if (rsmd != null) { 
  33.  
  34.             int count = rsmd.getColumnCount(); 
  35.             for (int i = 1; i <= count; i++) 
  36.                System.out.println("Column Name: " + 
  37.                   rsmd.getColumnName(i) + 
  38.                   " Type: " + rsmd.getColumnTypeName(i)); 
  39.          } else { 
  40.             System.out.println("RowSetMetadata not supported"); 
  41.          } 
  42.  
  43.       } catch (ClassNotFoundException | SQLException ex1) { 
  44.          System.err.println(ex1); 
  45.       } finally { 
  46.          try { 
  47.             rowSet.close(); 
  48.          } catch (SQLException ex2) { 
  49.  
  50.          } 
  51.       } 
  52.    } 

結(jié)束語(yǔ)

以這些例子作為一個(gè)出發(fā)點(diǎn),以此試用JDC元數(shù)據(jù)API。JDBC元數(shù)據(jù)API是創(chuàng)建大多數(shù)商業(yè)數(shù)據(jù)庫(kù)應(yīng)用程序所必不可少的。它們尤其適用于創(chuàng)建定制的數(shù)據(jù)庫(kù)解決方案,比如生成基于GUI的數(shù)據(jù)瀏覽器應(yīng)用程序。比如說(shuō),你可以根據(jù)從數(shù)據(jù)庫(kù)檢索的元數(shù)據(jù)信息,動(dòng)態(tài)創(chuàng)建一個(gè)基于GUI的表結(jié)構(gòu)。想了解關(guān)于API及其功能的更多信息,請(qǐng)參閱Java API說(shuō)明文檔。

原文標(biāo)題:Discovering Database Metadata with the JDBC Metadata API

原文作者:Manoj Debnath

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

責(zé)任編輯:陶家龍 來(lái)源: 51CTO
相關(guān)推薦

2022-03-16 11:03:40

數(shù)據(jù)庫(kù)元數(shù)據(jù)數(shù)據(jù)引擎

2010-12-27 16:18:59

本地元數(shù)據(jù)庫(kù)

2021-09-27 23:58:55

數(shù)據(jù)庫(kù)分層設(shè)計(jì)

2021-09-01 14:36:14

鴻蒙HarmonyOS應(yīng)用

2009-07-20 10:48:08

JDBC API

2021-09-01 10:37:25

鴻蒙HarmonyOS應(yīng)用

2023-02-27 15:46:19

數(shù)據(jù)元元數(shù)據(jù)

2009-07-06 17:23:34

JDBC連接數(shù)據(jù)庫(kù)

2009-07-16 17:22:56

JDBC數(shù)據(jù)庫(kù)編程

2021-04-25 19:00:55

大數(shù)據(jù)視頻分析人工智能

2022-05-26 10:04:46

Druid元數(shù)據(jù)數(shù)據(jù)庫(kù)

2009-11-09 17:30:20

WCF元數(shù)據(jù)

2023-05-29 16:51:06

2023-09-04 18:57:01

API接口數(shù)據(jù)中心

2022-05-29 22:56:13

數(shù)據(jù)安全元數(shù)據(jù)

2011-05-26 09:27:59

JDBC連接數(shù)據(jù)庫(kù)

2011-05-26 13:54:42

數(shù)據(jù)庫(kù)JDBC連接

2009-07-14 17:18:23

JDBC怎么連接數(shù)據(jù)庫(kù)

2009-07-07 17:42:28

2010-06-04 09:33:28

連接MySQL數(shù)據(jù)庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲精品国产精品久久| 主播福利视频一区| 久久久久久久久久久久久国产精品| 午夜在线观看视频18| 日本伊人色综合网| 欧美日韩国产va另类| 成年人网站免费在线观看| 日日狠狠久久| 精品久久久久久久久久久| 亚洲一区精品视频| 午夜成人鲁丝片午夜精品| 狠狠狠色丁香婷婷综合激情| 69av在线播放| 69av视频在线| 成人综合专区| 日韩av在线资源| 性生活一级大片| japanese23hdxxxx日韩 | 久久国产精品无码一级毛片| 久久久加勒比| 色哟哟亚洲精品| 国产成人在线小视频| 99中文字幕一区| 99精品久久只有精品| 亚洲va久久久噜噜噜久久天堂| 欧美在线观看不卡| 激情久久久久| 美日韩丰满少妇在线观看| 成人片黄网站色大片免费毛片| 999久久久久久久久6666| 欧美日韩午夜在线视频| caopor在线视频| 电影在线观看一区| 亚洲一区二区三区中文字幕| 日韩第一页在线观看| 成人18在线| 国产视频视频一区| 欧美日韩一区综合| 亚欧洲精品视频| 99精品一区二区| 国产精品久久精品视| 国产叼嘿视频在线观看| 精品一区在线看| 国产拍精品一二三| 在线不卡免费视频| 全部av―极品视觉盛宴亚洲| 国产精品91久久久| 国产在线一级片| 日韩中文欧美在线| 国产精品久久久久高潮| 日韩在线播放中文字幕| 久久一区亚洲| 国产精品久久91| 亚洲最新av网站| 看国产成人h片视频| 国产色视频一区| 国产三级在线观看视频| 国产一区二区h| 高清视频一区| 天天干天天爽天天操| 91女人视频在线观看| 欧美日韩电影一区二区| 精品99又大又爽又硬少妇毛片 | 久久艳妇乳肉豪妇荡乳av| 亚洲av成人精品日韩在线播放| 99久久99久久免费精品蜜臀| 欧美激情一区二区三区在线视频| 国产在线观看黄| 国产精品久久久久久久久久久免费看| 夜夜爽www精品| 永久免费网站在线| 午夜一区二区三区视频| 日本成年人网址| 成人精品高清在线视频| 欧美一级欧美一级在线播放| 国产一精品一aⅴ一免费| 欧美挤奶吃奶水xxxxx| 亚洲欧美中文在线视频| 长河落日免费高清观看| 国产精品v亚洲精品v日韩精品| 国内精品久久久久久久| 波多野结衣二区三区| 久久se精品一区精品二区| eeuss一区二区三区| 亚洲av片一区二区三区| 中文一区二区完整视频在线观看| 伊人久久大香线蕉午夜av| 久久99亚洲网美利坚合众国| 狠狠色噜噜狠狠狠狠97| 欧美成人福利在线观看| 9l视频自拍九色9l视频成人| 亚洲视频欧美视频| 青娱乐国产在线视频| 久久亚洲欧洲| 91情侣在线视频| 国产特黄在线| 亚洲成人www| 九色porny自拍| 美女扒开腿让男人桶爽久久动漫| 日日摸夜夜添一区| 久久精品国产成人av| 国模少妇一区二区三区| 麻豆久久久9性大片| 日韩精品毛片| 色欲综合视频天天天| 亚洲 自拍 另类 欧美 丝袜| 沈樵精品国产成av片| 欧美激情免费看| 亚洲天堂男人网| 91天堂素人约啪| 奇米777四色影视在线看| 日韩欧美一区二区三区免费观看| 精品精品欲导航| 992在线观看| 久久久国产亚洲精品| 国产日本一区二区三区| 好操啊在线观看免费视频| 色94色欧美sute亚洲线路一ni| 免费观看污网站| 中文字幕一区二区三区乱码图片| 国产精品日日做人人爱| 色天堂在线视频| 亚洲一级二级三级| 波多野结衣三级视频| 国产精品精品| 国产精品入口夜色视频大尺度 | 国产96在线 | 亚洲| 成人综合日日夜夜| 日韩在线观看成人| 中文字幕777| 亚洲国产成人自拍| 热久久精品免费视频| 国产精品三级| 国产精品扒开腿做爽爽爽视频 | 欧美激情视频播放| 99久久亚洲精品日本无码| 国产欧美一区二区精品性色超碰 | 国产精品白浆一区二小说| 国产一区二区美女诱惑| 精品一区二区成人免费视频| 欧美成人一二区| 日韩视频中文字幕| 一区二区视频免费| 国产精品久久久久婷婷二区次| 久久久久免费精品| 日韩在线观看| 成人黄色免费片| gogo在线高清视频| 日韩欧美123| 久久网免费视频| 成人午夜看片网址| 日本www在线视频| 日韩mv欧美mv国产网站| 欧美尤物巨大精品爽| 欧洲综合视频| 欧美四级电影在线观看| 国产三级精品三级观看| 国产美女视频一区| 无码人妻精品一区二区蜜桃网站| 国产精品22p| 91av成人在线| 啊v视频在线| 5566中文字幕一区二区电影| 欧美人妻精品一区二区三区| 精品国产精品国产偷麻豆| 日韩视频在线免费| 999久久久久久| 一区二区视频免费在线观看| 五月天六月丁香| 国产在线不卡| 久久久一本精品99久久精品| 亚洲成人激情社区| 日韩在线观看免费av| 国产高清第一页| 亚洲成人动漫一区| 国产又粗又猛又爽又黄av| 久久精品国产亚洲aⅴ| 日本中文字幕一级片| 婷婷五月色综合香五月| 国产精品嫩草影院久久久| 2024短剧网剧在线观看| 亚洲激情成人网| 中文字幕在线日亚洲9| 一二三四社区欧美黄| 亚洲黄色在线网站| 久久福利视频一区二区| av日韩一区二区三区| 国产欧美日韩精品一区二区三区 | 中文字幕av无码一区二区三区| 亚洲人成网站色在线观看| yy1111111| 久久成人久久爱| 国产特级黄色大片| 91精品啪在线观看国产18| 久久精品午夜一区二区福利| 4438五月综合| 日本国产精品视频| 性网站在线观看| 一本大道亚洲视频| 人妻妺妺窝人体色www聚色窝| 欧美视频一区在线观看| 国产一级淫片a| 国产精品福利在线播放| 成年人的黄色片| 国产精品资源在线观看| www.日日操| 宅男噜噜噜66一区二区| 性生活免费观看视频| 欧州一区二区| 久久精品五月婷婷| 国产精品巨作av| 成人免费午夜电影| 欧美123区| 日本精品久久久久影院| av影院在线| 久久av在线看| 日本蜜桃在线观看| 这里只有精品在线观看| 精品视频二区| 日韩成人久久久| 成人免费公开视频| 欧美一区二区三级| 国产一区二区在线播放视频| 在线免费观看日本欧美| 欧美a视频在线观看| 天天综合天天做天天综合| 五月天丁香激情| 亚洲婷婷综合色高清在线| 欧洲性xxxx| 国产精品网站导航| 色www亚洲国产阿娇yao| 国产欧美一区二区三区鸳鸯浴| 色婷婷在线影院| 91捆绑美女网站| 欧美图片一区二区| 99精品在线免费| 香蕉网在线播放| 久久影院电视剧免费观看| 亚洲成人av免费在线观看| 成人黄色小视频在线观看| 亚洲日本久久久| 成人a免费在线看| 国产精品无码在线| 成人av网在线| 一本色道综合久久欧美日韩精品 | 天堂资源在线视频| 国产精品天干天干在观线| 最新日韩免费视频| 1024成人网| 欧美日韩一级大片| 亚洲成a人在线观看| 国产成人无码精品久久久久| 色综合一区二区三区| 在线观看国产区| 欧美日韩一二三区| 精品二区在线观看| 亚洲电影中文字幕| 日韩欧美亚洲系列| 中文字幕自拍vr一区二区三区| 九义人在线观看完整免费版电视剧| 久久成人综合视频| 波多一区二区| 日韩免费不卡av| 免费一级欧美在线观看视频| 亚洲一区二区三区久久| 伊人久久影院| 欧美精品免费观看二区| 日韩欧美网站| 青草网在线观看| 久久综合网络一区二区| 欧美激情第一区| 成人精品电影在线观看| 成人在线一级片| 亚洲日本va午夜在线影院| 国产成人愉拍精品久久| 欧美系列亚洲系列| 精品人妻午夜一区二区三区四区| 日韩大片在线观看视频| av在线三区| 97国产在线观看| 精品国产黄a∨片高清在线| 爱情岛论坛亚洲入口| 欧美男男gaytwinkfreevideos| 一区中文字幕在线观看| 亚洲伊人网站| 性鲍视频在线观看| 国产午夜亚洲精品理论片色戒 | 99国产超薄肉色丝袜交足的后果 | 亚洲人成电影在线观看天堂色| 1区2区3区在线观看| 欧美精品videossex性护士| 男人皇宫亚洲男人2020| 91久久国产综合久久蜜月精品| 一区二区小说| a级片一区二区| 免费人成在线不卡| 黄色污在线观看| 亚洲视频小说图片| 日韩在线视频不卡| 精品成人a区在线观看| 在线免费av网站| 日韩av免费看网站| 成人看片黄a免费看视频| 在线丝袜欧美日韩制服| 在线亚洲自拍| 动漫美女无遮挡免费| 综合久久给合久久狠狠狠97色| 国产午夜麻豆影院在线观看| 精品国精品国产尤物美女| 日本视频在线播放| 国产精品嫩草影院久久久| 亚洲福利网站| 无码专区aaaaaa免费视频| 国产综合色视频| 成人小视频免费看| 日韩欧中文字幕| 深夜福利在线看| 欧美极品少妇xxxxⅹ免费视频 | av激情在线观看| 欧美日韩免费不卡视频一区二区三区 | 久久久久久久久久久久| 亚洲国产精品一区二区www在线| 国产男女裸体做爰爽爽| 中文字幕日韩专区| 精品123区| 少妇免费毛片久久久久久久久| 国产欧美二区| 北京富婆泄欲对白| 婷婷中文字幕一区三区| 刘亦菲毛片一区二区三区| 欧美日产国产成人免费图片| 久久9999免费视频| 好吊色这里只有精品| 国内精品伊人久久久久av一坑 | 亚洲天堂2024| 亚洲成a人v欧美综合天堂下载| 亚洲国产欧美另类| 欧美激情亚洲综合一区| 91精品啪在线观看国产爱臀| 日韩中文在线字幕| 国产成人亚洲综合a∨婷婷| 丰满少妇被猛烈进入一区二区| 制服丝袜成人动漫| av片在线观看永久免费| av一本久道久久波多野结衣| 欧美日韩四区| 欧美精品欧美极品欧美激情| 欧美色另类天堂2015| 国产大片在线免费观看| 国产精品一区二区在线| 91精品精品| 白丝校花扒腿让我c| 午夜精品久久久久影视| 男同在线观看| 国产日韩亚洲欧美| 国产一区二区三区四区老人| 韩国三级hd两男一女| 欧美午夜片在线免费观看| 黄色在线视频观看网站| 成人激情春色网| 亚洲第一在线| 欧美性猛交xxxx乱| 欧美日本精品一区二区三区| 亚洲按摩av| 你懂的网址一区二区三区| 日韩二区三区四区| 一区二区国产精品精华液| 欧美精品一区二区精品网| 欧美裸体视频| 一区二区免费电影| 高清免费成人av| 国产精品国产三级国产专区52| 一区二区在线视频| 蜜桃精品一区二区三区| 精品国产免费av| 中文字幕一区二区三区四区不卡| 高h调教冰块play男男双性文| 热re91久久精品国99热蜜臀| 亚洲精品成人| 美国黄色一级毛片| 91麻豆精品久久久久蜜臀| 国模私拍视频在线播放| 午夜精品短视频| 成人小视频免费在线观看| 中文字幕乱码人妻二区三区| 欧美大秀在线观看| 日韩欧美中文| 鲁大师私人影院在线观看| 欧美日韩国产美女| 午夜不卡影院| 在线视频一二三区| 国产午夜精品久久久久久免费视 | 亚洲国产精品免费视频| 已婚少妇美妙人妻系列| 亚洲高清免费观看| 日本最黄一级片免费在线| 久99久在线| 国产乱码精品一区二区三区忘忧草| 亚洲天堂一区在线| 欧美黄色小视频|