精品欧美一区二区三区在线观看 _久久久久国色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)

亚洲欧美日本在线观看| 久久国产黄色片| 国产日韩三级| 日本乱人伦aⅴ精品| 亚洲国产日韩综合一区| www.天堂在线| 日韩电影一二三区| 日韩中文字幕网| 国产精品久久无码| 欧美一级网址| 午夜精品免费在线| 在线视频不卡国产| 日韩av成人| 国产精品影视网| 国产第一区电影| 精品一级少妇久久久久久久| 不卡日本视频| 日韩av在线免费观看一区| 99re6在线观看| 亚洲精品动漫| 亚洲成年人影院| 色香蕉在线观看| 波多野结衣在线网站| 成人短视频下载| 91在线观看免费观看 | 天堂99x99es久久精品免费| 在线不卡免费欧美| 国产三级三级三级看三级| 国产黄色大片在线观看| 综合网在线视频| 色播五月综合| 国产天堂素人系列在线视频| 99re热视频这里只精品| 爱情岛论坛亚洲入口| 国产绿帽一区二区三区| 久久精品999| 国产精品免费网站| 国产熟妇一区二区三区四区| 国产精品尤物| 91精品国产91| 免费在线不卡视频| 亚洲伦理精品| 性欧美xxxx交| 日韩精品成人在线| 亚洲日本成人| 国内外成人免费激情在线视频网站| 欧美日韩色视频| 91嫩草亚洲精品| 日韩在线视频观看正片免费网站| 蜜桃传媒一区二区亚洲| 国产亚洲电影| 中文字幕亚洲一区二区三区| 久久久久亚洲av无码a片| 精品高清在线| 上原亚衣av一区二区三区| 影音先锋制服丝袜| 久久成人综合| 久久成人综合视频| 国产免费无码一区二区视频| 欧美阿v一级看视频| 欧美黑人巨大精品一区二区| 久久久久久久久精| 一区二区福利| 日韩免费中文字幕| 在线观看毛片av| 国产精品一色哟哟哟| 国产成人精品日本亚洲11| 少妇人妻偷人精品一区二区| 91年精品国产| 亚洲人成77777| 黄色成人影院| 亚洲成a人片在线不卡一二三区| 老太脱裤子让老头玩xxxxx| 在线能看的av网址| 欧美日韩色一区| 在线观看网站黄| 羞羞答答一区二区| 日韩在线免费av| 日韩免费一二三区| 日日摸夜夜添夜夜添国产精品 | 欧美情侣性视频| 日韩精品视频播放| 日韩和的一区二区| 91亚洲va在线va天堂va国| 老司机午夜福利视频| xf在线a精品一区二区视频网站| 日韩性感在线| 日本无删减在线| 日韩欧亚中文在线| 天堂网成人在线| 美女毛片一区二区三区四区| 久久精品国产欧美激情| 国产无遮挡裸体免费视频| 日本伊人色综合网| 国产精品麻豆免费版| 国产精品视频二区三区| 亚洲综合久久av| 日韩av片网站| 日韩高清影视在线观看| 久久不射热爱视频精品| 国产免费a视频| 国产福利一区二区三区视频| 欧日韩一区二区三区| 日本性爱视频在线观看| 欧美性生活一区| 中文字幕在线播放一区| 91精品综合| 日本在线精品视频| 欧美特黄一级视频| 亚洲欧美视频在线观看视频| 日韩av一二三四| 加勒比视频一区| 久久久成人精品| 依依成人综合网| 成人综合激情网| 在线一区日本视频| 日本电影欧美片| 亚洲第一区在线观看| 亚洲一级生活片| 免费在线看成人av| 欧美日韩综合精品| 51av在线| 精品成人在线观看| 免费人成在线观看| 国产另类ts人妖一区二区| 亚洲巨乳在线观看| 色综合一本到久久亚洲91| 日韩成人在线视频观看| 久久精品第一页| 国产激情偷乱视频一区二区三区| 亚洲一区二区高清视频| 久久久成人av毛片免费观看| 亚洲男子天堂网| 97人人澡人人爽人人模亚洲| 成人深夜在线观看| 在线观看17c| 久久伊人精品| 欧美另类高清videos| 97视频免费在线| 综合精品久久久| 国产精品久久久久久9999| 欧美激情黄色片| 成人性生交xxxxx网站| 久久久久久国产精品免费无遮挡| 欧美日韩久久一区| 久久久久久久麻豆| 国产一区二区不卡老阿姨| 黄色网zhan| 欧洲精品99毛片免费高清观看| 久久婷婷国产麻豆91天堂| 国产口爆吞精一区二区| 一区二区三区日本| 东京热av一区| 在线亚洲精品| 日韩av不卡播放| 国产精品美女午夜爽爽| 日韩在线视频免费观看高清中文 | 日韩成人高清| 中文字幕日韩视频| 国产欧美第一页| 一区二区三区免费| 中文字幕在线播放一区| 肉丝袜脚交视频一区二区| 亚洲精品在线观看免费| 欧美影院在线| 青草青草久热精品视频在线网站| 国产永久免费高清在线观看视频| 精品视频一区二区三区免费| 娇小11一12╳yⅹ╳毛片| 国产综合久久久久久鬼色 | wwwwxxxx在线观看| 亚洲精品中文字幕av| 中文在线a天堂| 亚洲免费资源在线播放| 最近日本中文字幕| 精品中文字幕一区二区 | 日本午夜一区二区| 天天干天天色天天爽| 狼人天天伊人久久| 国产精品美女主播| 尤物yw193can在线观看| 亚洲人成欧美中文字幕| 国产青青草视频| 色婷婷综合久久久久中文一区二区| 亚洲色图 激情小说| 国产99久久久国产精品免费看| 日韩中文字幕在线视频观看| 91欧美在线| 精品一区在线播放| 91成人app| 热99精品只有里视频精品| 成人在线影视| 亚洲人精品午夜在线观看| 国产夫绿帽单男3p精品视频| 欧美视频免费在线| 欧美性猛交xxxxx少妇| 久久麻豆一区二区| 色欲欲www成人网站| 日韩电影免费在线观看网站| 日本久久久网站| 91麻豆国产自产在线观看亚洲 | 男人的天堂在线| 日韩亚洲欧美成人一区| 欧美国产一级片| 香蕉加勒比综合久久 | 性久久久久久久久久久久| 青青青视频在线免费观看| 99精品偷自拍| 99久久综合网| 久国产精品韩国三级视频| 欧美私人情侣网站| 在线观看日韩av电影| 熟女视频一区二区三区| 欧美理论在线播放| 欧美精品一区二区视频 | 国产精品一区二区黑丝| 高清一区在线观看| 蜜桃久久av| 噜噜噜久久亚洲精品国产品麻豆| 你懂的网址国产 欧美| 亚洲自拍偷拍二区| 欧美日韩老妇| 日本精品免费| 国产成人三级| 欧美日韩精品免费在线观看视频| 国产香蕉精品| 国产精品一区在线播放| 一区二区在线免费播放| 999热视频| 免费观看亚洲视频大全| 91免费看国产| 99久久久成人国产精品| 91日韩在线视频| 国产精品亚洲综合在线观看 | 91麻豆一区二区| 欧美日韩一区二区三区四区五区| 亚洲国产成人精品女人久久| 一本久久a久久精品亚洲| 日本免费在线观看视频| 欧美三级xxx| 日本视频免费观看| 91福利视频在线| 精品成人无码久久久久久| 在线中文字幕一区二区| 天堂网一区二区| 欧美日韩一区精品| 国产日韩在线观看一区| 日韩欧美高清一区| 成人无码一区二区三区| 亚洲国产古装精品网站| 日本免费一区二区三区最新| 亚洲人成在线观看| 在线免费黄色| 久久成人精品电影| 嗯~啊~轻一点视频日本在线观看| 国外成人在线直播| 午夜精品久久久久久久久久蜜桃| 国产精品欧美在线| 成人污污www网站免费丝瓜| 亚洲影院在线看| 加勒比视频一区| 日韩尤物视频| 91成人超碰| 日本阿v视频在线观看| 蜜桃伊人久久| 亚洲欧美日本一区二区三区| 国产成人在线视频播放| 可以直接看的无码av| 日本一区二区视频在线| 国产av无码专区亚洲av毛网站| 亚洲福利视频导航| 波多野结衣一区二区在线| 欧美精品久久一区| 天堂网在线观看视频| 国产一区二区三区在线观看视频 | 99久re热视频这里只有精品6| 激情小说亚洲色图| 在线成人av电影| 亚洲乱码视频| 天堂av在线8| 91社区在线播放| 萌白酱视频在线| 亚洲高清免费视频| 伊人色综合久久久| 亚洲护士老师的毛茸茸最新章节| 二人午夜免费观看在线视频| 久久99热精品这里久久精品| 成人日韩在线观看| http;//www.99re视频| 国产一区不卡| 国产曰肥老太婆无遮挡| 日韩国产精品大片| 人妻av一区二区| 国产精品国产三级国产普通话蜜臀| 久久精品www人人爽人人| 欧美色老头old∨ideo| 天天操天天干天天爽| 久久久av网站| 一呦二呦三呦精品国产| 国产精品免费一区二区| 99精品视频在线| 欧美成人精品欧美一级乱| 成人中文字幕合集| 看片网站在线观看| 精品视频免费在线| 国产女主播在线直播| 国内精久久久久久久久久人| 日韩国产一二三区| 日本一区二区三不卡| 亚洲乱码久久| 国产51自产区| 亚洲欧洲制服丝袜| 一级黄色片在线看| 一区二区三区视频免费| 伊人成综合网站| 国产日韩欧美二区| 国内精品美女在线观看| 中文字幕日韩综合| 国产精品国产三级国产普通话三级| 亚洲综合久久网| 亚洲精品中文字幕有码专区| av影院在线免费观看| 岛国视频一区免费观看| 亚洲h色精品| 激情在线观看视频| 综合亚洲深深色噜噜狠狠网站| 中文字幕免费播放| 中文字幕免费国产精品| 88xx成人免费观看视频库 | 亚洲一区二区中文| 天天射成人网| 91看片破解版| 日韩一区欧美小说| 91麻豆一区二区| 精品国产依人香蕉在线精品| 日本午夜免费一区二区| 伊人久久大香线蕉av一区| 久久精品国产99国产| 国产麻豆a毛片| 欧美日韩国产一二三| 欧美精品电影| 亚洲综合在线做性| 欧美片第1页综合| 99re这里只有| 高潮白浆女日韩av免费看| 色天堂在线视频| 国产精品吹潮在线观看| 日本黄色精品| 日本77777| 亚洲国产欧美在线| 婷婷丁香花五月天| 国产精品极品在线| 99精品视频在线| 97精品人人妻人人| 欧美午夜激情视频| 成人免费在线电影| 成人黄色av网站| 国产精品chinese| 欧美无人区码suv| 欧美亚洲日本一区| 麻豆视频在线观看免费| 成人av资源网| 视频一区二区欧美| 999精品在线视频| 精品成人一区二区三区| 日韩电影免费观| 热这里只有精品| jlzzjlzz国产精品久久| 国产亚洲欧美日韩高清| 欧美精品亚州精品| 欧美理伦片在线播放| 国产视频手机在线播放| 亚洲精品成人在线| 精品福利视频导航大全| 91久久精品在线| 亚洲在线免费| 美国黄色片视频| 亚洲国产精品va在线| 999国产精品亚洲77777| a级片一区二区| 国产性做久久久久久| 99久久国产免费| 国产va免费精品高清在线| 小小影院久久| 波多野结衣 在线| 777色狠狠一区二区三区| 性欧美18xxxhd| 日韩最新中文字幕| 国产婷婷色一区二区三区在线| 99热这里只有精品3| 国产91在线高潮白浆在线观看 | 欧美黄色小视频| 欧美日韩一区二区三区视频播放| 成人一区二区三区仙踪林| 欧美三级在线视频| 国产在线观看www| 老司机午夜免费福利视频| 国产偷v国产偷v亚洲高清| 天天干天天插天天操| 成人亲热视频网站|