日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JDBC接口规范

發(fā)布時間:2025/5/22 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JDBC接口规范 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

JDBC(JavaDatabase Connectivity)表示Java查詢引擎連接,由一組用Java編程語言編寫的類和接口組成。JDBC為Java程序訪問關(guān)系型查詢引擎提供了編程接口,為查詢引擎開發(fā)人員提供了一個標(biāo)準(zhǔn)的API,使他們能夠用JavaAPI 來編寫查詢引擎應(yīng)用程序,而不必為訪問不同查詢引擎編寫不同的程序。

隨著J2SE版本的不斷發(fā)展,JDBC規(guī)范也不斷完善。發(fā)展到目前為止,JDBC規(guī)范已經(jīng)發(fā)到3.0版本。該版本相對于以前的2.0版本又提供了很多新的特性,比如保存點、查詢計劃的參數(shù)信息、多結(jié)果集、自動生成鍵等。

查詢引擎 JDBC驅(qū)動程序基本實現(xiàn)了JDBC3.0規(guī)范,尤其針對JDBC3.0規(guī)范中的新增特性,給出了很好的支持。對于這些新的特性的支持,為用戶提供了更為方便的編寫查詢引擎應(yīng)用程序的方法,使得用戶編寫應(yīng)用程序?qū)⒏痈咝?#xff0c;編寫的應(yīng)用程序也更加健壯。

本規(guī)范結(jié)合查詢引擎的特點,針對JDBC 的基本概念和基本技術(shù),定義查詢引擎JDBC標(biāo)準(zhǔn)規(guī)范。

本規(guī)范適用于所有查詢引擎的用戶。


1.2.1??????建立連接

打開一個與查詢引擎的連接,需要調(diào)用DriverManager.getConnection()方法。通過調(diào)用該方法,可以取得一個Connection類的實例(Instance),這個實例就在應(yīng)用程序和查詢引擎建立了一個連接,使用這個連接,我們就能通過查詢引擎系統(tǒng)操作各個節(jié)點了。要得到Connection的實例,就需要應(yīng)用程序輸入用戶名、密碼、查詢引擎 JDBC驅(qū)動特定的連接語句以及想要連接的查詢引擎庫名稱。用戶將有兩種連接方法來與查詢引擎建立連接。

1.????????指定URL、用戶名和密碼

下面這個方法用URL、用戶名、密碼作為參數(shù):

Class.forName(“com.scistor.swift.jdbc.Driver”);

getConnection(String URL, String user, Stringpassword);

URL的格式是:

jdbc:swift://host/database

jdbc:swift://host:port/database

其中:

參數(shù)

參數(shù)說明

host

服務(wù)器的主機名。

port

服務(wù)器監(jiān)聽的端口號。缺省時是查詢引擎默認的端口號(2003)

database

查詢引擎庫名。此處的database就是在安裝時創(chuàng)建的查詢引擎庫所對應(yīng)的名字

比如想要連接查詢引擎,它的URL、用戶名、密碼分別是:

?????? Stringurl = “jdbc:swift://localhost/SYSTEM”;

?????? Stringname = “SYSDBA”;

?????? Stringpassword = “SYSDBA”;

那么就可以很容易的獲得一個與查詢引擎的連接了

?????? Connectioncon = DriverManager.getConnection(url,name,password);

這就意味著用戶通過用戶名”SYSDBA”,密碼”SYSDBA”連接到了本地的名稱為“SYSTEM”的查詢引擎。

2.????????指定URL和Properties對象

指定URL的方法同上面一樣,現(xiàn)在我們就來指定Properties對象:

java.util.Properties info = newjava.util.Properties();

info.setProperty(“user”,”SYSDBA”);

info.setProperty(“password”,”SYSDBA”);

現(xiàn)在就可以獲得連接了:

Connection con =DriverManager.getConnection(url,info);

1.2.2??????創(chuàng)建Statement對象

一旦連接上了查詢引擎,也就是說,已經(jīng)獲得了一個Connection的實例,那么就可以通過該Connection實例創(chuàng)建一個Statement對象。通過Statement對象來處理不同的SQL語句。我們就用前面獲得的Connection實例con來創(chuàng)建一個Statement對象,下面就是一個創(chuàng)建Statement對象的例子:

Statement stmt = con.createStatement();

這個操作是完全遵循JDBC標(biāo)準(zhǔn)規(guī)范的,沒有任何要處理關(guān)于特定查詢引擎 JDBC驅(qū)動的地方。

1.2.3??????執(zhí)行語句

如果需要查詢查詢引擎中的數(shù)據(jù),只需要調(diào)用Statement對象的executeQuery()方法。這個方法以SQL語句作為參數(shù),方法執(zhí)行完后返回一個JDBC的ResultSet對象。為了保持連續(xù)性,我們就使用上面已經(jīng)創(chuàng)建的Statement對象。比如我們要從一張表名為TEMP的表中選出所有數(shù)據(jù),我們只要簡單的調(diào)用executeQurey()方法:

ResultSet rs = stmt.executeQuery(“SELECT * FROMTEMP”);

同上面一樣,這個操作也是完全遵循JDBC標(biāo)準(zhǔn)規(guī)范的,沒有任何要處理關(guān)于特定查詢引擎 JDBC驅(qū)動的地方。

注:假如我們已經(jīng)在查詢引擎中創(chuàng)建了一個名為TEMP的表,它有兩列分別為ID(INT),VALUE(STRING)。后面的章節(jié)將多次使用到這個表。

1.2.4??????處理結(jié)果集

一旦執(zhí)行了SQL語句,獲得了ResultSet對象,那么就可以通過調(diào)用Resulset對象中的next()操作遍歷ResultSet操作,以獲得每條記錄。如果next()方法返回為true,那么就意味著現(xiàn)在有記錄可以讀取出來,接著就可以調(diào)用ResultSet對象的getXXX()方法來取得對應(yīng)列的值,XXX代表了要取得的列的類型,該方法是以列序號或列名為參數(shù)的,下面就從上面獲得的ResultSet對象中取得數(shù)據(jù):

while (rs.next())

System.out.println(rs.getString(2));

在這里TEMP表中第二列的類型STRING,所以我們使用了rs對象的getString()方法。當(dāng)然這里也可以通過調(diào)用rs.getString(paramName)來獲得值。這個方法也是遵循JDBC標(biāo)準(zhǔn)的。如果一直向下做遍歷,當(dāng)沒有記錄的時候,next()就會返回false。

1.2.5??????關(guān)閉Statement對象和結(jié)果集

當(dāng)不再需要使用Statement和Resultset數(shù)據(jù)之后,就必須顯式的關(guān)閉已經(jīng)創(chuàng)建的Statement對象。JDBC驅(qū)動程序沒有自動地釋放這些對象的功能,應(yīng)用程序必須顯式的調(diào)用Statement的close()方法和ResultSet的close()方法。一旦已經(jīng)顯式的關(guān)閉了已經(jīng)創(chuàng)建的對象,就不能再使用這些對象了。如果已經(jīng)不再使用某些Statement對象和Resultset對象,但是卻不去釋放它,那將會造成嚴重的內(nèi)存泄漏。如果創(chuàng)建了大量的Statement和ResultSet對象,但是卻不釋放它們,應(yīng)用程序可能最終會造成OUT OF MEMORY的后果。

比如應(yīng)用程序中的Statement對象是stmt,ResultSet對象是rs,就可以這樣關(guān)閉它:

rs.close();

stmt.close();

雖然關(guān)閉了Statement對象時,創(chuàng)建該Statement對象的Connection仍然與查詢引擎保持連接,應(yīng)用程序仍然可以用它創(chuàng)建其他的Statement對象。

1.2.6??????關(guān)閉與查詢引擎的連接

最后,當(dāng)不再需要與查詢引擎的連接時,就需要關(guān)閉Connection對象。調(diào)用Connection的close()方法,就會關(guān)閉連接,釋放網(wǎng)絡(luò)上的資源。

con.close();

?

1.3數(shù)據(jù)類型的映射

JDBC驅(qū)動支持大多數(shù)由JDBC3.0規(guī)范所要求的類型。在類型映射中,我們將討論JAVA類型、JDBC類型以及查詢引擎類型是如何進行相互映射的。比如前臺的String對應(yīng)于JDBC類型中的那種,又對應(yīng)于查詢引擎中的那種類型。

表3-1是查詢引擎數(shù)據(jù)類型。

序號

類型

描述

有效范圍

1

smallint

整型數(shù)據(jù)

[-32768, 32767]

2

int

整型數(shù)據(jù)

[-2147483648, 2147483647]

3

bigint

整型數(shù)據(jù)

[-9223372036854775808, 9223372036854775807]

4

double precision

浮點雙精度數(shù)

[2.2250738585072014e-308,1.7976931348623158e+308]

5

real

浮點精度數(shù)字

[-1E+308, 1E+308]

6

text

可變長度的字符數(shù)據(jù)

最大長度為1G個字符

7

char(n)

定長字符串

長度為n

8

varchar(n)

變長字符串

最大長度為n

9

bytea

變長的二進制字串

理論上沒有限制,可以達到4個G

10

boolean

布爾類型

TRUE/FALSE

11

timestamp

時間戳

‘2013-01-01 00:00:00’

?

查詢引擎數(shù)據(jù)類型這一列列舉了在查詢引擎中的數(shù)據(jù)類型。

JDBC 類型這一列列舉JDBC標(biāo)準(zhǔn)支持的,并在java.sql.Types類中有定義的類型。

標(biāo)準(zhǔn)JAVA類型這一列列舉了在JAVA語言中定義的標(biāo)準(zhǔn)類型。

表3-2 查詢引擎數(shù)據(jù)類型、JDBC類型和標(biāo)準(zhǔn)JAVA類型之間的映射。

序號

查詢引擎

數(shù)據(jù)類型

JDBC類型

標(biāo)準(zhǔn)JAVA類型

1

smallint

java.sql.Types.SMALLINT

short

2

Int

java.sql.Types.INT

int

3

Bigint

java.sql.Types.BIGINT

long

4

double precision

java.sql.Types.DOUBLE

double

5

Real

java.sql.Types.FLOAT

double

6

Text

java.sql.Types.VARCHAR

java.lang.String

7

char(n)

java.sql.Types.VARCHAR

java.lang.String

8

varchar(n)

java.sql.Types.VARCHAR

java.lang.String

9

bytea

java.sql.Types.BINARY

byte[]

10

boolean

java.sql.Types.BOOLEAN

boolean

11

timestamp

java.sql.Types.TIMESTAMP

java.sql.Timestamp

?

1.4處理SQL異常

在運行應(yīng)用程序的時候,可能會拋出很多異常。可能由于查詢引擎沒有打開導(dǎo)致連接不上,插入的數(shù)據(jù)類型不符,想要刪除的表不存在等等。由JDBC拋出的異常大多是java.sql.SQLException或者它的子類的對象。這些異常有可能是從查詢引擎中拋出來的,也有可能是從前臺的JDBC驅(qū)動拋出的。比如上面提到的服務(wù)器連接不上就是由JDBC驅(qū)動拋出的異常,想要刪除的表不存在就是由查詢引擎中拋出的錯誤。

那么如何處理這些由JDBC拋出的異常呢?由JDBC拋出的java.sql.SQLException和它的子類,一般都會包括錯誤描述,標(biāo)準(zhǔn)的SQL State和廠商特定的錯誤編碼。錯誤描述、SQL State和錯誤編號會在附錄中給出。

java.sql.SQLException提供了獲取這些信息的方法。

通過調(diào)用SQLException的getMessage()方法,可以獲得由JDBC驅(qū)動或者查詢引擎報出的錯誤。通過這個錯誤描述,就可以知道錯誤的原因了。

通過調(diào)用SQLException的getErrorCode()方法,可以獲得由廠商特定錯誤編碼,在有些情況下可能不返回錯誤描述,只返回一個空的字符串。

通過調(diào)用SQLException的getState()的方法,可以獲得標(biāo)準(zhǔn)的SQL State。SQL State是由5個數(shù)字組成的字符串。

下面這例子打印出調(diào)用getMessage方法所得到的錯誤信息。

try{

?????? <somecode>

}

catch(SQLException se){

?????? System.out.println(“錯誤信息:”+se.getMessage());

}

SQLException類也允許打印出堆棧式的出錯信息。打印的內(nèi)容將包括錯誤描述,和這個錯誤從拋出一直到被捕捉到所經(jīng)過的所有被調(diào)用的方法。

下面給出了如何打印出堆棧信息的方法。

try{

?????? <somecode>

}

catch(SQLException se){

?????? se.printStackTrace();}

第2章????查詢引擎 JDBC驅(qū)動對于 JDBC規(guī)范的支持

查詢引擎 JDBC驅(qū)動是基于JDBC3.0規(guī)范而實現(xiàn)的。在以前的JDBC2.0規(guī)范中,將API分為核心API和擴展API。JDBC3.0規(guī)范包含了JDBC2.0規(guī)范的核心API以及JDBC2.0的擴展API,并添加了一些新的特性。查詢引擎 JDBC驅(qū)動實現(xiàn)了JDBC3.0規(guī)范中的大部分接口,主要包括下列接口:

l? java.sql.Dirver

l? java.sql.Connection

l? java.sql.Statement

l? java.sql.ResultSet

l? java.sql.DatabaseMetaData

l? java.sql.ResultSetMetaData

查詢引擎 JDBC驅(qū)動對于上述每個接口的方法,基本上提供了實現(xiàn)。除了JDBC要求的基本特性之外,比如執(zhí)行一般的SQL語句,可以對從結(jié)果集取得數(shù)據(jù)等,遵照JDBC3.0的規(guī)范,查詢引擎 JDBC驅(qū)動還提供了一些JDBC的特殊特性:

按照JDBC規(guī)范,提供了類型之間的相互轉(zhuǎn)換,比如int和String之間的轉(zhuǎn)化,String和java.sql.Date之間的轉(zhuǎn)化,具體的內(nèi)容,請參照《JDBC3.0規(guī)范》

實現(xiàn)了對ResultSet的各種特性的支持,這些特性是在創(chuàng)建Statement對象、PreparedStatement對象和CallableStatement對象時指定的。

Type包括:

l? TYPE_FORWARDONLY

Concurrency包括:

l? CONCUR_READ_ONLY

Holdability包括:

l? 不支持

在查詢引擎 JDBC驅(qū)動中對這些特性都給出了較好的實現(xiàn)。具體說明將在結(jié)果集一章中給出。

允許用戶在Statement和ResultSet中設(shè)置fetchSize,通過設(shè)置fetchSize,對于記錄數(shù)很大的情況下,可以極大的降低對內(nèi)存的使用量。

?

第3章????執(zhí)行SQL語句和處理結(jié)果集

查詢引擎 JDBC驅(qū)動提供了Statement對象用于發(fā)送SQL語句到查詢引擎。

3.1創(chuàng)建Statement對象

建立了到查詢引擎的連接之后,就可以使用該連接發(fā)送SQL語句。Statement對象通過Connection接口的方法createStatement創(chuàng)建,例如:

Connection conn = DriverManager.getConnection(url,"SYSDBA","SYSDBA");

Statement stmt = conn.createStatement();

在創(chuàng)建Statement對象的時候,可以通過參數(shù)來指定產(chǎn)生結(jié)果集的屬性,詳見“結(jié)果集處理”一章。為了執(zhí)行Statement對象,被發(fā)送到查詢引擎的SQL語句將被作為參數(shù)提供給Statement的方法,例如:

String sql = “SELECT * FROM TEMP”;

ResultSet rs = stmt.executeQuery(sql);

3.2使用Statement對象執(zhí)行SQL語句

Statement接口提供了三種執(zhí)行SQL語句的方法:executeQuery、executeUpdate和execute。使用哪一個方法由SQL語句執(zhí)行后產(chǎn)生的結(jié)果而決定。

方法executeQuery用于產(chǎn)生單個結(jié)果集的語句,例如SELECT語句,執(zhí)行executeQuery方法將返回一個結(jié)果集對象。方法executeUpdate用于執(zhí)行INSERT、UPDATE或DELETE語句以及SQL DDL(數(shù)據(jù)定義語言)語句,例如CREATE TABLE和DROP TABLE。由于INSERT、UPDATE或DELETE語句的效果是修改表中若干行中的一列或多列,所以executeUpdate的返回值是一個整數(shù),指示受影響的行數(shù)(即更新記錄數(shù));對于CREATETABLE或DROP TABLE等不操作行的語句,executeUpdate的返回值總是為零(我們把這個零返回值也視為更新記錄數(shù),即沒有記錄受到影響)。當(dāng)被執(zhí)行的SQL語句返回一個更新記錄數(shù)、一個結(jié)果集、多結(jié)果集或者SQL語句的類型未知,則使用execute方法。下面的例子演示了以上方法的使用。

使用executeQuery方法處理SQL數(shù)據(jù)查詢語句:

Statement stmt = conn.createStatement();

String sql = “SELECT ID,VALUE FROM TEMP”;

ResultSet rs = stmt.executeQuery(sql);

while (rs.next()){

// 處理獲得的數(shù)據(jù)記錄

}

使用executeUpdate方法處理SQL數(shù)據(jù)操縱語句:

Statement stmt = conn.createStatement();

String sql = “UPDATETEMPSETVALUE = ‘VALUE10’WHEREID = 10”

int rows = stmt.executeUpdate(sql);

if (rows >= 0) {

//<some code>

}

使用executeUpdate方法處理SQL數(shù)據(jù)定義語句:

Statement stmt = conn.createStatement();

String sql = “CREATE TABLE TEST(ID INT, VALUEVARCHAR(50))”;

int updcount = stmt.executeUpdate(sql);

if (updcount== 0) {

// <some code>

}

使用execute方法處理SQL語句:

String sql;

// 對字符串sql進行賦值,單條SQL語句

...

Statement stmt = conn.createStatement();

boolean b = stmt.execute(sql);

if (b) {

// 說明返回的是ResultSet對象

ResultSet rs;

rs = stmt.getResultSet();

while (rs.next()) {

//<some code>

}

}

else {

// 說明返回的是更新記錄數(shù)

int rows = stmt.getUpdateCount();

if (rows >= 0) {

????????????? //<somecode>

}

}

需要說明的是,執(zhí)行上面提及的任一種方法都將關(guān)閉所調(diào)用的Statement對象的當(dāng)前打開結(jié)果集(如果存在)。這意味著在重新執(zhí)行Statement對象之前,需要完成對當(dāng)前ResultSet對象的處理。

3.3使用execute()方法

當(dāng)SQL語句執(zhí)行后會返回ResultSet對象或更新記錄數(shù),通常使用execute方法。當(dāng)同時執(zhí)行多個SQL語句、執(zhí)行某個存儲過程或動態(tài)執(zhí)行未知SQL字符串(即應(yīng)用程序程序員在編譯時未知)時,就有可能出現(xiàn)多個結(jié)果的情況,因此在這種情況下就需要使用execute(),因為execute()方法同時適用于對有ResultSet對象返回和有更新記錄數(shù)返回的情況。

如果不知道返回結(jié)果的類型,則可以通過execute方法的返回值來進行判斷。如果結(jié)果是ResultSet對象,則方法execute返回true;如果結(jié)果類型是更新紀(jì)錄數(shù),則返回false。如果返回int,則意味著結(jié)果是更新記錄數(shù)或執(zhí)行的語句是DDL命令。在調(diào)用方法execute之后可以調(diào)用getResultSet()或getUpdateCount()。其中g(shù)etResultSet()方法獲得當(dāng)前結(jié)果集,而getUpdateCount()獲得記錄的更新數(shù)。

當(dāng)SQL語句的返回結(jié)果不是結(jié)果集時,則方法getResultSet將返回null。這可能意味著結(jié)果是一個更新記錄數(shù)或沒有其它結(jié)果。在這種情況下,判斷null真正含義的方法是調(diào)用方法getUpdateCount(),它將返回一個整數(shù)。這個整數(shù)為調(diào)用語句所影響的行數(shù);如果為-1則表示結(jié)果是結(jié)果集或沒有結(jié)果。如果方法getResultSet已返回null(表示結(jié)果不是ResultSet對象),則返回值-1表示沒有其它結(jié)果。也就是說,當(dāng)下列條件((stmt.getResultSet()==null)&&(stmt.getUpdateCount()==-1))為真時表示沒有結(jié)果(或沒有其它結(jié)果)。

下面給了一個示例,用于執(zhí)行未知sql語句的情況下作判斷:

boolean retVal = stmt.execute( sql);

if (retVal){

?????? //有結(jié)果集返回

ResultSet rs = stmt.getResultSet();

?????? //處理結(jié)果集

?????? //<somecode>

}

else {

?????? //說明可能有更新記錄

?????? intupdateCount = stmt.getUpdateCount();

?????? if(updateCount != -1) {

????????????? //對有更新記錄的情況作處理

????????????? //<somecode>

}

}

?

3.4關(guān)閉Statement對象

作為一種好的編程風(fēng)格,對于不再使用的Statement對象應(yīng)顯式地關(guān)閉它們,這可以使得Statement對象使用的外部資源立即被釋放。同時,應(yīng)顯示關(guān)閉由Statement對象所創(chuàng)建的Resultset對象,但是ResultSet對象使用的資源只有到垃圾收集機制啟動時,才會真正的釋放他們。所以,當(dāng)一個對象不需要時,無論是ResultSet對象還是Statement對象,都應(yīng)該盡早地釋放他們。

第4章????結(jié)果集(ResultSet)的特性

本章內(nèi)容包括:

4.1概述

在JDBC3.0規(guī)范中結(jié)果集的特性,包括可滾動性(scrollability)、可定位(positioning)、敏感性(sensitivity)、可更新性(updatability)和可保持性(holdability)。這些特性可以分為Type,Concurrency和Holdability三大類,下表為查詢引擎對各特性的支持情況定義:

ResultSet Types

支持程度

ResultSet Concurrency

支持程度

ResultSet Holdability

支持程度

TYPE_FORWARD_ONLY

支持

CONCUR_READ_ONLY

支持

HOLD_CURSOR_OVER_COMMIT

不支持

TYPE_SCROLL_INSENSITIVE

不支持

CONCUR_UPDATABLE

不支持

CLOSE_CURSOR_AT_COMMIT

不支持

TYPE_SCROLL_SENSITIVE

不支持

 

 

 

 

?

4.2設(shè)置結(jié)果集大小

查詢引擎 JDBC驅(qū)動提供了允許用戶設(shè)置結(jié)果集大小(即上面結(jié)果集的敏感性中提到的窗口的大小)的方法。通過設(shè)置結(jié)果集的大小,驅(qū)動每次從查詢引擎取得的記錄數(shù)將不超過用戶設(shè)置的大小。比如TEMP表的實際記錄數(shù)有100萬條,用戶如果把它一次全部取出來,就會耗用大量的內(nèi)存;用戶可以設(shè)置結(jié)果集的大小,比如為1萬,那么查詢引擎 JDBC驅(qū)動將每次只從后臺查詢引擎取1萬條。當(dāng)用戶作游標(biāo)移動操作時,如果JDBC發(fā)現(xiàn)那條記錄還沒從查詢引擎取出來,就會從查詢引擎取出那條記錄。

stmt.setFetchSize(10000);

ResultSet rs = stmt.executeQuery(“SELECT * FROMTEMP”);

while(rs.next()) {

//如果調(diào)用到第10001次,驅(qū)動程序會再從后臺取10000條,把原來的記錄

//覆蓋掉,這樣內(nèi)存中始終只是用了10000條記錄內(nèi)存的大小

}

在缺省情況下,即用戶不設(shè)fetchSize時, JDBC驅(qū)動會將所有記錄一次取出來。因此對于記錄數(shù)極大的情況下(比如100萬條)可能會耗用大量的內(nèi)存。但是如果用戶將fetchSize設(shè)得不夠大,會增加網(wǎng)絡(luò)的開銷和查詢引擎的查詢操作,因此在這種情況下應(yīng)用程序的執(zhí)行速度將不如缺省的情況。用戶對于內(nèi)存耗用量和執(zhí)行速度必須有一個折中的考慮,取得最好的平衡點。

第5章????MetaData信息

MetaData是一種重要的機制,可以供用戶來獲取相應(yīng)對象(目標(biāo)數(shù)據(jù)源、結(jié)果集,參數(shù)信息等)的詳細描述信息。在JDBC驅(qū)動中,有三個接口專門提供相應(yīng)的MetaData信息:

DatabaseMetaData:用于描述查詢引擎的元數(shù)據(jù)信息;

ResultSetMetaData:用于描述ResultSet對象的元數(shù)據(jù)信息;

ParameterMetaData:用于描述PreparedStatement、CallableStatement對象參數(shù)屬性的元數(shù)據(jù)信息。

下面將分別介紹這三個接口相應(yīng)方法的使用。

5.1DatabaseMetaData

DatabaseMetaData接口的實現(xiàn)是為了給用戶提供目標(biāo)數(shù)據(jù)源的信息,應(yīng)用程序根據(jù)接口中的各種方法得到相應(yīng)的信息,進而決定如何與之交互。

獲取DatabaseMeta信息的步驟是:首先創(chuàng)建DatabaseMetaData對象:

DatabaseMetaData dbmd = conn.getMetaData();

利用dbmd對象,調(diào)用DatabaseMetaData接口的相應(yīng)方法就可以獲得查詢引擎和JDBC驅(qū)動程序的一些信息,例如:

int majorVersion = dbmd.getJDBCMajorVersion(); // 獲得JDBC 驅(qū)動程序的主版本號

DatabaseMetaData接口包括了超過150種的方法,根據(jù)提供信息的類型,可以把這些方法分為五類:

提供數(shù)據(jù)源總體信息的方法:比如獲得查詢引擎的主版本號版本信息的getDatabaseMajorVersion();

說明數(shù)據(jù)源是否支持某一特定特征的方法:比如根據(jù)方法supportsANSI92EntryLevelSQL()的返回值可以知道查詢引擎是否支持ANSI92入門級SQL語法;

說明數(shù)據(jù)源限制的方法:比如通過getMaxConnections()方法可以得到查詢引擎支持的最大連接數(shù);

說明數(shù)據(jù)源支持哪些SQL對象,他們的屬性是什么:比如getTables()、getPrimaryKeys()方法;

說明數(shù)據(jù)源提供的事務(wù)支持:比如通過getDefaultTransactionIsolation()方法可以得到查詢引擎缺省的事務(wù)隔離級別。

建議支持接口如下:

函數(shù)

功能

intgetJDBCMajorVersion()

獲取JDBC主版本號

String getDatabaseProductName()

獲取系統(tǒng)名稱

String getDatabaseProductVersion()

獲取版本號

String getDriverName()

獲取驅(qū)動名稱

String getDriverVersion()

獲取驅(qū)動版本號

String getURL()

獲取引擎URL

?

關(guān)于各種方法的具體說明請參閱JAVA2 SDK DOCUMENT。

5.2ResultSetMetaData

ResultSetMetaData接口提供的方法用于獲取一個ResultSet對象各個列的類型和屬性,比如列名、列數(shù)據(jù)類型、列所屬的表、以及列是否允許值為 NULL等等。

下面的例子演示了ResultSetMetaData的創(chuàng)建和使用:

假如有一個表StudentInfo(StuIDINT,StuName VARCHAR(10)),下面的例子可以得到這個表的各個列的類型名稱:

String sql = “SELECT StuID, StuName FROMStudentInfo”;

ResultSet rs = stmt.executeQuery(sql);

ResultSetMetaData rsmd = rs.getMetaData();

for(int i = 1; i <= rsmd.getColumnCount(); i++)

{

????????????? //依次打印出列的類型名稱

????????????? StringtypeName = rsmd.getColumnTypeName(i);

????????????? System.out.println(typeName);

}

建議支持接口如下:

?

函數(shù)

功能

intgetColomnCount()

獲取字段個數(shù)

String getColumnName(int column)

根據(jù)結(jié)果集中字段索引獲取字段名

intgetColumnType(int column)

獲取字段的類型代碼

String getColumnTypeName(int column)

獲取字段類型的名稱

?

關(guān)于各種方法的具體說明請參閱JAVA2 SDK DOCUMENT。

?

第6章????批處理

批處理更新機制允許多個更新操作提交給數(shù)據(jù)源一次處理。相比于一次次單獨執(zhí)行更新,這樣的處理方式可以大大的提高效率和性能。Statement、PreparedStatement對象均可以通過addBatch、executeBatch等方法使用批處理更新方式。

6.1Statement中的批處理

當(dāng)一個Statement對象創(chuàng)建的時候,它的批處理隊列是空的。通過調(diào)用addBatch()方法,可以將作為參數(shù)的SQL語句加入隊列中。特別需要指出的是,遵照JDBC3.0規(guī)范,所有加入隊列的SQL語句必須是執(zhí)行后返回結(jié)果為更新記錄數(shù)的語句(即insert,delete, update語句和DDL語句),否則將拋出SQLException異常。

如果不打算提交批更新隊列中的SQL語句,需要調(diào)用clearBatch方法來清空批處理隊列。執(zhí)行批處理更新使用executeBatch方法即可。需要注意的一點:在使用批處理更新之前必須先禁用AutoCommit模式。

下面是一個例子:

//改變auto-commit模式

conn.setAutoCommit(false);

Statementstmt = conn.createStatement();

//設(shè)置SQL語句

stmt.addBatch("INSERTINTO employee VALUES (1024, 'Joe Jones')");

stmt.addBatch("INSERTINTO department VALUES (6, 'Shoe')");

stmt.addBatch("INSERTINTO emp_dept VALUES (1024, 6)");

//執(zhí)行批處理更新

int[]updateCounts = stmt.executeBatch();

conn.commit();

最后說明一點,在批處理隊列當(dāng)中不允許設(shè)置保存點(savepoint)。如果要設(shè)置,必須在第一條SQL語句被添加到批處理隊列中之前。

6.2PreparedStatement中的批處理

在PreparedStatement對象中使用批處理更新機制,是指先對SQL語句執(zhí)行查詢優(yōu)化,然后在批處理隊列中置入多組輸入?yún)?shù),而后提交數(shù)據(jù)源一次處理。下面是一個例子:

//改變auto-commit模式

conn.setAutoCommit(false);

Stringsql = “INSERT INTO TEMP(ID,VALUE) VALUES(?,?)”;

//先做查詢優(yōu)化

PreparedStatementpstmt = conn.prepareStatement("sql”);

?

//設(shè)置參數(shù)值

pstmt.setInt(1,200);

pstmt.setString(2,"Tom Kaufmann");

pstmt.addBatch();

//設(shè)置參數(shù)值

pstmt.setInt(1,300);

pstmt.setString(2,"Mike Barnes");

pstmt.addBatch();

?

//執(zhí)行,取得更新記錄

int[]updateCounts = pstmt.executeBatch();

conn.commit();

6.3批處理中的異常處理

在批處理執(zhí)行過程中,如果有一條語句執(zhí)行出錯,執(zhí)行將不再繼續(xù)下去,查詢引擎JDBC將會拋出BatchUpdateException,該異常是SQLException的子類。在BatchUpdateException中提供了getUpdateCounts()方法,該方法的返回值是一個int數(shù)組。同前面executeBatch()方法一樣,該返回數(shù)組是一個記錄的更新數(shù),數(shù)組中的每個值,都是相應(yīng)SQL語句在查詢引擎中更新的記錄數(shù)。不過getUpdateCounts()返回的數(shù)組長度,為正確執(zhí)行的SQL語句數(shù),而不是批處理中所有的SQL語句數(shù)。因此,getUpdateCounts()中包含的記錄更新數(shù),將只包含正確執(zhí)行的SQL語句,而不包含錯誤執(zhí)行或沒有執(zhí)行到的SQL語句。

第7章????B參考資料

關(guān)于更詳細的JDBC Driver 的信息,可以參考JAVA2 SDK DOCUMENT和JDBC3.0規(guī)范.可以在http://java.sun.com/products/jdbc/index.html獲得相關(guān)文檔。

?

轉(zhuǎn)載于:https://www.cnblogs.com/xiaodf/p/5027200.html

總結(jié)

以上是生活随笔為你收集整理的JDBC接口规范的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

久久精品久久精品久久 | 日日夜夜草 | 欧美日韩p片 | 日韩欧美高清视频在线观看 | 色网站免费在线观看 | 欧美色就是色 | 在线观看视频三级 | 中文在线√天堂 | 综合激情av| 一区二区三区观看 | 午夜精品久久久 | 91精选在线 | 久久久久久国产一区二区三区 | 日韩a在线看 | 欧美成人在线免费 | 精品中文字幕在线播放 | av免费在线免费观看 | 日韩在线短视频 | 97超碰人人模人人人爽人人爱 | 国产精品av免费观看 | 美女免费av | 久久久免费观看完整版 | 久久久96 | 欧美特一级片 | 国产无遮挡又黄又爽在线观看 | 99久久日韩精品免费热麻豆美女 | 黄色的视频网站 | 黄色av电影在线观看 | 婷婷丁香六月天 | 中文字幕丝袜制服 | 制服丝袜一区二区 | 99久久影视| 狠狠干狠狠色 | 99在线免费视频 | 久久久精品影视 | 中日韩免费视频 | 特级黄色一级 | 欧美国产日韩一区二区三区 | 狠狠综合久久 | 中文字幕在线一区二区三区 | 日本性生活一级片 | 国产精品毛片一区二区在线 | 欧美日韩精品在线观看 | 人人狠狠综合久久亚洲婷 | 久久视频在线看 | 尤物一区二区三区 | 色诱亚洲精品久久久久久 | 91精品在线免费 | 午夜av网站 | 欧美日韩视频免费 | 99理论片 | 日韩大片免费观看 | 狠狠伊人| 日韩影视在线观看 | 欧美性色综合 | 国产福利精品一区二区 | 激情五月婷婷网 | 日本久久免费视频 | 天天干人人 | 久久国语露脸国产精品电影 | 国产成人一区二区三区免费看 | 丁香婷婷电影 | 国产精品久久久久av福利动漫 | 九九有精品| 久久人人爽人人片 | 少妇bbw揉bbb欧美 | 久热免费在线观看 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 91视频久久久久久 | 亚洲精品乱码白浆高清久久久久久 | 黄色毛片一级片 | 久久精品国产一区二区三区 | 久久人人爽爽人人爽人人片av | 激情导航 | 久久99精品国产麻豆宅宅 | 久久在线影院 | 国产精品福利一区 | 深夜激情影院 | 五月天久久久 | 日本系列中文字幕 | 久久久久久久久久久久久国产精品 | 99视频在线免费看 | 天天爱天天射天天干天天 | 欧美美女一级片 | 国产精品刺激对白麻豆99 | 国产中文| 97人人模人人爽人人少妇 | 久久不卡电影 | 国产精品丝袜 | 欧美美女视频在线观看 | 欧美午夜一区二区福利视频 | 99精品免费网 | 一区二区欧美在线观看 | av在线成人 | 日本在线观看中文字幕无线观看 | 69精品视频在线观看 | 国产精品一区二区久久久久 | 波多野结衣在线视频免费观看 | 五月开心网 | 久久免费国产精品1 | 久久免费看毛片 | 久久99精品久久久久久秒播蜜臀 | 精品一区二区精品 | a'aaa级片在线观看 | 麻豆传媒电影在线观看 | 伊人色播 | 免费a级大片 | 久久五月婷婷丁香 | 波多野结衣在线视频一区 | 久久只精品99品免费久23小说 | 国产精品视频你懂的 | 天堂在线视频免费观看 | 天天操天天弄 | 国产精品午夜在线 | 在线日韩视频 | 亚洲欧美日本国产 | 国产精品三级视频 | aⅴ视频在线 | 91九色在线播放 | 国产我不卡 | 成人三级网站在线观看 | 天天干天天操天天拍 | 97久久精品午夜一区二区 | 日韩一区二区三区在线观看 | 999成人国产 | 黄色成年 | 亚洲欧美视频 | 亚洲夜夜网| 日韩av电影国产 | 最近免费中文视频 | 粉嫩av一区二区三区四区在线观看 | 国产精品地址 | 国产免费人人看 | 日日草天天干 | 亚洲成av人片在线观看无 | 日本黄色免费观看 | 在线视频精品 | av观看网站 | 国产精品久久99综合免费观看尤物 | 国产精品自产拍在线观看中文 | 午夜久久成人 | 干 操 插| 久久精品日本啪啪涩涩 | 四虎成人在线 | 中文字幕在线色 | 欧美日韩高清一区 | 久久久久 | 国产日韩中文字幕 | 亚洲精品1234区 | 不卡国产在线 | 国产高清在线视频 | 国产精品9999久久久久仙踪林 | 久久艹国产视频 | 国产精品亚洲人在线观看 | a午夜在线| 视频在线国产 | 日韩专区在线播放 | 久久尤物电影视频在线观看 | 91精品伦理| 日韩理论视频 | 国产在线无 | 在线导航av| 久久久久欧美精品 | 99成人免费视频 | 深爱激情av | 中文字幕一区二 | 国产福利小视频在线 | 日韩电影一区二区三区 | 4438全国亚洲精品在线观看视频 | 黄色三级在线看 | 成人影片在线免费观看 | 亚色视频在线观看 | 国产色区 | 精品美女在线观看 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 麻豆果冻剧传媒在线播放 | 97视频人人免费看 | 顶级bbw搡bbbb搡bbbb | 男女日麻批| 亚洲视频免费在线 | 天天操天天色天天 | 在线播放一区二区三区 | 中文字幕中文字幕 | 久久综合久色欧美综合狠狠 | 成人免费视频网 | 99热超碰 | 97操操操 | 免费精品久久久 | 欧美久久综合 | 97精品国产97久久久久久久久久久久 | 亚洲综合小说电影qvod | 97在线观看免费 | 国产在线91在线电影 | 五月婷香 | av高清影院| 久久久久久久久久亚洲精品 | 精品 激情 | 手机av电影在线观看 | 国产手机av在线 | 亚洲最大av | 亚洲国产成人精品在线观看 | 日韩精品高清不卡 | 中文有码在线视频 | 国产亚洲精品久久19p | 日日爽视频 | 欧美一区在线观看视频 | 国产精品久久网 | 久久国产亚洲精品 | 97视频资源 | 黄色免费网站下载 | 久久亚洲婷婷 | 一级黄色免费网站 | 一区二区三区不卡在线 | 国产无遮挡猛进猛出免费软件 | 天天射天天爱天天干 | 久久婷婷综合激情 | 国产精品久久久电影 | 中文字幕免费高 | 在线观看的av网站 | 成人宗合网 | 欧美最新大片在线看 | 国产精品99蜜臀久久不卡二区 | av再线观看 | 九九九热精品免费视频观看网站 | 亚洲资源在线观看 | 91av色| 久久免费视频在线观看30 | 最新av电影网站 | 成人一区二区在线 | 成人影视免费看 | 免费看片在线观看 | 国产在线超碰 | 免费裸体视频网 | 西西444www大胆高清视频 | 久久av免费 | 91麻豆精品国产91久久久久 | 欧美精品久久人人躁人人爽 | 久久精品中文字幕一区二区三区 | 亚洲a资源 | av色综合网| 国产精品网站一区二区三区 | 成人四虎| 国产精品自在线 | 久久综合色影院 | 毛片美女网站 | 综合在线观看色 | 在线免费高清 | 成av在线 | 夜夜操天天 | 99热精品免费观看 | 精品你懂的 | 日本特黄一级片 | 国产在线第三页 | 日韩在线观看影院 | 国产91勾搭技师精品 | 日韩在线网 | 国产一区二区久久久 | 999在线精品 | 久草精品视频在线播放 | 91九色pron| 欧美激情视频在线观看免费 | 国产一二三区在线观看 | 国产一级二级av | 黄色app网站在线观看 | 久久久在线 | 色综合久久网 | 97超碰人人在线 | 色五丁香 | 又色又爽又黄高潮的免费视频 | 天天综合网~永久入口 | 精品国产一区二区三区免费 | japanesexxxhd奶水| 国产成人精品999在线观看 | 免费高清无人区完整版 | 国产原厂视频在线观看 | 免费av在| 99性视频 | 久久精品视频日本 | caobi视频| 成人91视频 | 在线成人观看 | 婷婷综合视频 | 狠狠躁夜夜躁人人爽超碰91 | 麻豆91精品视频 | 国产精品美女久久久久久免费 | 成人在线观看av | 国产精品久久久久影院日本 | 国产 成人 久久 | 免费一级毛毛片 | 91桃色在线免费观看 | 日日日操| 最近2019中文免费高清视频观看www99 | 色噜噜日韩精品一区二区三区视频 | 成人av电影免费在线播放 | 成 人 黄 色 视频免费播放 | 人人澡超碰碰 | 久久视频在线观看中文字幕 | 黄色软件视频大全免费下载 | 日韩免费电影一区二区三区 | 亚洲精品视频偷拍 | 波多野结衣电影一区二区三区 | 国产日韩精品在线观看 | 在线视频观看91 | 日韩精品视频在线观看网址 | 99综合视频 | 亚洲无在线 | 成人久久久久久久久久 | 日韩毛片在线一区二区毛片 | 一区二区三区在线观看免费视频 | 国产一区在线不卡 | 色婷婷视频在线观看 | 日韩视频图片 | 麻豆视频入口 | 999色视频 | ,午夜性刺激免费看视频 | 天堂av高清 | 亚洲精品乱码 | 日韩免费在线一区 | 香蕉影院在线播放 | 久久综合久久伊人 | 久久国产手机看片 | 69国产精品视频免费观看 | 国产高清无av久久 | 久久免费视频观看 | 国产一级免费观看 | 人人草在线视频 | 中文字幕在线播放视频 | 亚洲国产日韩一区 | 久久看片网站 | 日韩精品视频在线观看网址 | 黄色看片| 成人精品视频久久久久 | 日日日视频 | 日韩色av色资源 | 国产小视频在线 | 欧美一级免费黄色片 | 婷婷开心久久网 | 91干干干 | 一本一本久久a久久精品综合 | 色婷av| 一区二区三区四区免费视频 | 丁香婷婷综合激情 | 日日操天天操狠狠操 | 精品国产成人在线影院 | 成人黄色大片在线免费观看 | 亚洲午夜精品久久久久久久久久久久 | 中文字幕亚洲精品日韩 | 免费视频黄| 久久免费视频8 | 香蕉视频在线免费 | 欧美极品久久 | 色国产精品一区在线观看 | 日本bbbb摸bbbb | 国产高清在线看 | www黄com | 91中文视频 | 91精品中文字幕 | 美女在线国产 | 免费a级黄色毛片 | 色吊丝在线永久观看最新版本 | 色干干| 欧美日韩国产综合网 | 免费在线观看av | 亚洲男人天堂2018 | 丁香综合av | 亚洲少妇自拍 | 成年人免费看的视频 | 国产精品99精品 | 欧美另类69 | 日本免费一二三区 | 在线观看免费版高清版 | 国产精品一区久久久久 | 国产免费xvideos视频入口 | 91免费黄视频 | 免费高清在线视频一区· | 色综合天天狠天天透天天伊人 | 深爱激情婷婷网 | 亚洲精品在线视频播放 | 成人精品国产免费网站 | 欧美精品乱码99久久影院 | 九色精品在线 | 久久精品国产一区二区电影 | 久久亚洲免费 | 在线观看黄色 | 在线电影日韩 | 国内一区二区视频 | 婷婷六月丁 | 久草精品国产 | 国产精品v a免费视频 | 成人在线免费观看网站 | 欧美一级淫片videoshd | 五月天免费网站 | 日韩在线观看的 | 成人免费网站在线观看 | 久草视频免费播放 | www.久草视频| 日韩黄在线观看 | 久人人 | 精品国产一区二 | 麻豆精品在线 | 久久视频精品在线 | 日韩精品不卡在线观看 | 亚洲欧美婷婷六月色综合 | 国产精品婷婷 | 久久人人爽爽人人爽人人片av | 国产精品原创视频 | 高清不卡一区二区在线 | 天天射综合 | 亚洲a资源 | 国产中文字幕久久 | 国产一区国产二区在线观看 | www成人av | 黄色资源网站 | 激情久久综合网 | 亚洲精品久久久久58 | 一区二区三区免费看 | 探花在线观看 | 色网影音先锋 | 成年人免费在线观看网站 | 欧美日韩久久不卡 | 国产精品一区免费在线观看 | 99国产一区二区三精品乱码 | 天天干天天干天天干 | 日韩a在线播放 | 国产精品无av码在线观看 | 成人a视频在线观看 | 国产精品尤物视频 | 91传媒在线看 | 久久久久成人精品亚洲国产 | 亚洲综合在线视频 | 久久久午夜精品福利内容 | 久久99精品波多结衣一区 | 九九热有精品 | 国产香蕉97碰碰久久人人 | 麻豆传媒视频在线 | 欧美最新另类人妖 | 国产精品视频app | 久久精品99国产国产精 | 亚洲天堂网在线视频观看 | 亚洲精品高清在线观看 | 日韩精品第一区 | 欧美日韩精品电影 | 国产成人777777 | 日本高清xxxx| 久久国内视频 | 日韩精品视频免费看 | 日韩精品一区二区三区免费视频观看 | 国产成人精品亚洲日本在线观看 | 欧美一级日韩免费不卡 | 久久99视频 | 久久99国产一区二区三区 | 日日夜夜狠狠操 | 国产伦理一区二区三区 | 日韩高清一二三区 | 欧美专区日韩专区 | 亚洲免费精彩视频 | 国产无遮挡猛进猛出免费软件 | 国产精品自在欧美一区 | 久久国产一二区 | 日韩av不卡播放 | 色偷偷人人澡久久超碰69 | 国产精品女 | 在线中文字幕电影 | 国产精品片 | 成人欧美亚洲 | 久久久久久久久久免费视频 | 国产午夜在线观看视频 | 在线视频麻豆 | 国产精品欧美一区二区三区不卡 | 91伊人久久大香线蕉蜜芽人口 | 黄色影院在线观看 | 99免费在线观看 | 国产精品久久久久婷婷二区次 | 久久久免费看片 | 色吧av色av| 免费观看黄色12片一级视频 | 日本巨乳在线 | 国产高清视频在线免费观看 | 欧美精品久久久久久久免费 | 亚洲日本色 | 国产精品久久久久永久免费看 | 美女精品在线 | 日本中文字幕网站 | 国产不卡视频在线 | 精品国产视频在线观看 | 天天色天天色天天色 | 久久在线| 成人黄色免费在线观看 | 国产精品乱码高清在线看 | 一区二区三区www | 欧美成人va | 国产一区二区不卡视频 | 深夜视频久久 | 最新日韩在线观看 | 就要干b | 中文字幕视频播放 | 黄色aa久久 | 国产精品嫩草55av | 国产精品va在线播放 | 亚洲成人av一区 | 日韩精品视 | 日本一区二区三区视频在线播放 | 91亚洲欧美激情 | 成人黄色免费在线观看 | 国产精品嫩草影院99网站 | 中文字幕av在线播放 | 国产免费一区二区三区最新 | 亚洲精品视频观看 | 亚洲激情综合网 | 天堂黄色片| 日本精品视频免费观看 | 久久久久久高清 | 黄色免费在线视频 | 黄色国产高清 | 超碰国产人人 | 天天射天天爽 | 最新av网址大全 | 成人黄在线观看 | 久热国产视频 | 99麻豆久久久国产精品免费 | 日韩精品专区在线影院重磅 | 免费看的视频 | 福利视频第一页 | 成人在线视频免费看 | 激情av资源网 | 中文在线字幕免费观看 | 在线精品亚洲一区二区 | 成人性生交大片免费观看网站 | 久久国产精品久久国产精品 | 国产精品免费视频一区二区 | 日韩亚洲国产精品 | 韩国三级在线一区 | 国产免费观看久久黄 | 五月激情丁香婷婷 | 国产精品久久久久久久久久免费 | 日日夜夜操操 | 99在线免费视频 | 欧美另类一二三四区 | 国产丝袜在线 | 国产精品自产拍在线观看蜜 | 亚洲综合在线五月天 | 久久精品久久久精品美女 | 欧美精品久久人人躁人人爽 | 久久久久久久18 | 777xxx欧美| 又黄又爽又色无遮挡免费 | 五月婷网站 | 麻豆传媒在线免费看 | 一区二区三区四区不卡 | 欧美aa一级 | 久久久久免费精品 | 日韩资源在线播放 | 91视频在线观看免费 | 天堂av免费观看 | 国产精品久久久久久久久久久久久久 | 黄色av电影网| 91九色成人 | 精品亚洲欧美无人区乱码 | 狠狠久久伊人 | 日本精品久久久一区二区三区 | 久久国产综合视频 | 丰满少妇在线观看 | 97精品国产91久久久久久 | 国产又黄又爽又猛视频日本 | 综合天天| 成人在线视频免费看 | 麻豆传媒视频在线播放 | 激情欧美一区二区免费视频 | 欧美色黄 | 婷婷综合av | 日韩中文字幕视频在线观看 | 久久免费毛片视频 | 久久久久久久久久久久久国产精品 | 99看视频在线观看 | 激情在线五月天 | 久草在线在线视频 | 国产综合精品一区二区三区 | 天天激情站 | 日韩一区二区三免费高清在线观看 | 97超碰在线久草超碰在线观看 | 五月婷婷,六月丁香 | 青青草国产成人99久久 | 天天夜操 | 亚洲精品视频二区 | 国产精品久久久久永久免费 | 免费观看全黄做爰大片国产 | 久久99网 | 国产一在线精品一区在线观看 | 久热超碰| 久草视频在线资源 | 午夜久久 | 国产毛片在线 | 91av短视频| 久操伊人 | 日韩理论片在线观看 | 911久久香蕉国产线看观看 | 人人干天天干 | 亚洲成人资源在线观看 | 成人黄色在线电影 | 在线观看91精品国产网站 | 日韩av不卡在线 | 精品91视频| 玖玖视频| 国产一级片在线播放 | 国产精品免费久久久久久久久久中文 | 国产高清视频在线播放 | 丝袜美女在线观看 | 久久影院午夜论 | 国产亚洲成人网 | 欧美 日韩 性 | 欧美在线视频一区二区 | 中文字幕日韩高清 | 免费成人在线观看 | 成年人黄色大片在线 | 亚洲欧美国产精品18p | 国产精品毛片久久久久久久久久99999999 | 在线黄色国产电影 | 一区二区三区四区五区在线 | 成人免费视频网站在线观看 | 久久久精品高清 | 久精品在线观看 | 日韩精品一区二区三区免费视频观看 | 夜夜嗨av色一区二区不卡 | 国产视频一区在线播放 | 激情五月婷婷综合 | 精品v亚洲v欧美v高清v | 人人草在线视频 | 亚洲最新av在线网站 | 免费中午字幕无吗 | 激情黄色一级片 | 亚洲精品美女久久久久网站 | 三级av在线播放 | 国产中文字幕在线播放 | 色综合久久久久综合体桃花网 | 国产二区精品 | 精品久久一区 | 天堂激情网| 亚洲精品黄色 | 91精品国自产在线 | 福利久久久| 国产一级黄色免费看 | 久久超碰97| 国产日产亚洲精华av | 日韩二区在线 | 国产美女视频免费观看的网站 | 在线看一级片 | 国产中文欧美日韩在线 | 国产在线观看黄 | 中文字幕一区二区三区久久 | 又粗又长又大又爽又黄少妇毛片 | 欧美日韩视频免费 | 国产对白av | 国产一区国产精品 | 婷婷日日| 亚洲精品91天天久久人人 | 久久在线免费观看 | 亚洲激情视频在线 | 欧美亚洲xxx | 日韩免费视频 | 久久久久中文 | 97av视频在线| 日韩有码中文字幕在线 | 亚洲国产精品一区二区久久,亚洲午夜 | 国产精品美女久久久网av | 成人91免费视频 | 欧美久久久久久久久久久久久 | av在线一级 | 五月花丁香婷婷 | 亚洲爱爱视频 | 天堂成人在线 | 综合黄色网| 精品免费视频. | 激情综合国产 | 超碰97人人射妻 | 最近最新最好看中文视频 | 成年人三级网站 | 精品久久久久久久久中文字幕 | 久久99在线视频 | 中文字幕色综合网 | 天天操天天干天天综合网 | 欧美精品成人在线 | 国产精品久久99综合免费观看尤物 | 久久久久久久久综合 | 精品久久国产精品 | 在线免费视频一区 | 亚洲精品视频免费在线观看 | 国产精品一区二区免费看 | 日韩欧美高清在线 | 一级黄色片在线 | 一级a毛片高清视频 | 国产成人精品免费在线观看 | 69国产在线观看 | 狠狠地操| 色天天天 | 人人草人人做 | 国产69精品久久久久9999apgf | 欧美精品九九 | 日韩a在线观看 | 国产精品系列在线播放 | 国产伦精品一区二区三区无广告 | 欧美综合在线视频 | 国产精品黑丝在线观看 | 九九在线视频免费观看 | 手机av电影在线观看 | 人人爽人人爽人人 | 手机在线免费av | 国产精品白浆 | 又爽又黄又无遮挡网站动态图 | 久久久国产精品成人免费 | 亚洲国产精品va在线 | 超碰国产在线播放 | 欧美美女视频在线观看 | 精品久久久久亚洲 | 狠狠操天天操 | av成年人电影 | 99精品免费久久久久久久久日本 | 黄色精品免费 | 狠狠色狠狠色综合日日小说 | 亚洲女人av | 日本久热 | 国产黄在线看 | 成人91在线 | 四虎5151久久欧美毛片 | 国产在线观看91 | a黄色影院 | 中文字幕一区二区三区在线视频 | 国产剧情一区二区 | 99爱国产精品 | 国产成人99av超碰超爽 | 色综合中文综合网 | 99视频偷窥在线精品国自产拍 | 午夜视频在线观看一区二区三区 | 久草在线资源观看 | 人人爱在线视频 | 国产自制av | 国产一区二区电影在线观看 | 亚洲精品午夜aaa久久久 | 中文字幕二区 | 婷婷网五月天 | 一级免费看 | 免费久久久 | 国产明星视频三级a三级点| 国产原创av片 | 欧美老女人xx | 在线看不卡av | 天天天干| 黄色高清视频在线观看 | 欧美一二三专区 | 国产剧情一区二区 | 国产亚洲视频在线 | 成人a级免费视频 | 天天草综合网 | 欧美人人 | 麻豆视频免费在线观看 | 日韩中文字幕视频在线观看 | 国产专区日韩专区 | 99日韩精品| 日本护士三级少妇三级999 | 欧美成亚洲 | 久艹视频在线观看 | 婷婷激情五月综合 | 五月婷婷黄色 | 天天操狠狠操 | 日韩av资源在线观看 | 韩国av不卡| 免费观看的黄色 | 久久涩视频 | 中文字幕av日韩 | 99视频在线免费看 | 亚洲一区视频免费观看 | 亚洲天堂免费视频 | 免费看的黄网站 | 日韩综合第一页 | 99在线观看免费视频精品观看 | 91一区啪爱嗯打偷拍欧美 | 日韩精品专区在线影院重磅 | 91网址在线看 | 成年人在线电影 | 91精彩视频在线观看 | 国产精品va在线播放 | 丁香色综合 | 免费精品视频在线观看 | 免费观看一区二区 | 精品一区二区日韩 | 国产成人精品一区二区三区福利 | 中文字幕在线专区 | 91精品一 | 韩国av免费 | 久草在线视频精品 | 国产精品99视频 | 精品视频在线免费观看 | av在线免费观看黄 | 91热| 中文字幕免费不卡视频 | 亚洲成a人片在线www | 午夜丁香网 | 免费网站黄 | 国产一区在线免费观看 | 91九色国产| 久久9999久久免费精品国产 | 中文字幕在线观看完整版 | 在线国产精品一区 | 国产午夜精品一区二区三区嫩草 | 天天综合婷婷 | 日韩视频免费在线观看 | 成人教育av | 久久久久女教师免费一区 | 久久免费精品一区二区三区 | 国产一区av在线 | av看片网址 | 九月婷婷人人澡人人添人人爽 | 波多野结衣一区 | 欧美日韩免费一区二区 | 中文字幕在线精品 | 91在线视频在线观看 | 77国产精品 | 99热这里只有精品久久 | 久久免费视频一区 | 1024手机在线看 | 国产高清永久免费 | 欧美一级电影片 | 欧美性色xo影院 | 欧美俄罗斯性视频 | 91在线精品秘密一区二区 | 四虎永久免费网站 | 天天操天天干天天操天天干 | 日韩一区二区久久 | 久久综合狠狠综合久久激情 | 精品极品在线 | 中文字幕在线观看免费 | 丁香五月缴情综合网 | 欧美日韩高清一区二区 国产亚洲免费看 | 欧美日韩一区二区三区不卡 | 中文字幕中文字幕在线中文字幕三区 | 国产黄色在线网站 | 亚洲精品免费在线视频 | 欧美日韩一区二区三区在线免费观看 | 欧美日韩久久久 | 国产精品久久久777 成人手机在线视频 | 黄色免费观看视频 | 欧美不卡视频在线 | 天天操婷婷 | 亚洲精品久久久久中文字幕二区 | 日本黄色免费电影网站 | 亚洲成人免费在线观看 | 国产一区网| 一级久久精品 | 四虎免费在线观看视频 | 91视频免费网站 | 国产精品欧美一区二区三区不卡 | 精品国产一区二区三区男人吃奶 | 成人香蕉视频 | 久草在线观看视频免费 | 一级片黄色片网站 | 91av资源网 | 在线香蕉视频 | 久久一区二 | 天天操操操操操操 | 91九色网站 | 久久国产免费看 | 久久国产精品视频观看 | 午夜av激情| 欧美日韩一二三四区 | 国产免费观看高清完整版 | 国产精品一区二区无线 | 91伊人久久大香线蕉蜜芽人口 | 97成人精品区在线播放 | 久久久久久久久爱 | 国产999在线| 91精品视频在线看 | 婷婷中文字幕在线观看 | 国产中文在线视频 | 精品在线观看一区二区 | 中文字幕日本在线 | 永久免费av在线播放 | 香蕉视频免费在线播放 | 亚洲精品乱码久久久久久蜜桃欧美 | 亚洲视频1区2区 | 成片免费观看视频999 | 黄色a大片 | 中文字幕色婷婷在线视频 | 在线观看国产91 | 亚洲黄色精品 | 又黄又爽又色无遮挡免费 | 播五月婷婷 | 亚洲在线视频免费观看 | 国精产品999国精产 久久久久 | 久久99国产综合精品免费 | 久久久精品视频成人 | 91x色| 18性欧美xxxⅹ性满足 | 中文字幕人成不卡一区 | 免费韩国av| 久久久久久久网 | 97碰碰视频| 四虎在线免费观看视频 | 国产精品免费视频一区二区 | a在线视频v视频 | 91精品国产自产老师啪 | 久久久久久久久久久国产精品 | 麻豆视频在线 | 青青草国产精品 | 91麻豆文化传媒在线观看 | 韩国av电影在线观看 | 国产精品无 | 欧美性一级观看 | 欧美日本在线视频 | 久草在线在线视频 | 亚洲视频在线免费看 | 精品久久久久免费极品大片 | 中文字幕国内精品 | 国产精品k频道 | 在线午夜电影神马影院 | 日日干av | 不卡av电影在线观看 | 97人人人| 最近免费中文字幕大全高清10 | 久久综合给合久久狠狠色 | 日韩电影久久 | 啪啪免费视频网站 | 国产成人三级三级三级97 | 欧美精品xxx| www.久久视频| 日本一区二区三区视频在线播放 | 国产91影视| 97成人免费视频 | 免费一区在线 | 久久综合成人网 | 丁香花在线视频观看免费 | 国内精品久久久久影院男同志 | 97在线公开视频 | 日韩精品最新在线观看 | 国产精品免费一区二区 | www最近高清中文国语在线观看 | 国产成人精品免高潮在线观看 | 婷婷久月 | 一区二区视频电影在线观看 | 精品久久久久久久久久岛国gif | 九九久| 国产成人三级在线 | av线上看 | 国产高清 不卡 | 黄色三级免费观看 | 国产精品免费成人 | 日韩理论电影在线观看 | 欧美少妇bbwhd| 成年免费在线视频 | 久久人人添人人爽添人人88v | 国产精品一区久久久久 | 精品一二三四五区 | 久久久精品午夜 | 手机在线免费av | 91porny九色91啦中文 | 精品久久久久久久久久岛国gif | 水蜜桃亚洲一二三四在线 | 99精品国产99久久久久久97 | 日韩av看片| 精品国产乱码一区二区三区在线 | 亚洲精品一区二区三区四区高清 | 国产专区在线看 | av超碰在线观看 | 国产成人香蕉 | 夜夜视频欧洲 | 麻豆91在线看 | 人人爽人人爽人人爽 | av一级一片 | 国产手机在线 | 精品亚洲免费 | 欧美久久久一区二区三区 | 免费观看性生交大片3 | 久产久精国产品 | 最新国产一区二区三区 | 韩日精品视频 | 日韩在线电影一区二区 | 欧美精品被 | 在线 影视 一区 | 日韩国产精品久久 | 欧美久久久一区二区三区 | 国产日产精品久久久久快鸭 | 久久乐九色婷婷综合色狠狠182 | 国产在线精品一区二区 | 一级黄色在线视频 | 99久久久国产精品免费观看 | 毛片基地黄久久久久久天堂 | 免费福利影院 | a电影在线观看 | 色婷婷亚洲精品 | 久久久国产日韩 | 亚洲精品99久久久久久 | 黄av免费| 国产黄色精品在线 | www五月 | 精品视频国产一区 | 一级电影免费在线观看 | 国产亲近乱来精品 | 中文字幕第一 | 日日夜夜精品视频天天综合网 | av免费观看高清 |