韩剧1988免费观看全集_久久影视三级福利片_亚洲视频在线观看免费_在线观看欧美日韩_国产亚洲激情在线_亚洲精品美女久久久_欧美国产日韩一区二区在线观看_91在线观看免费高清完整版在线观看_日韩av免费看_国产又爽又黄的激情精品视频_琪琪亚洲精品午夜在线_欧美性猛xxx_不卡毛片在线看_国产亚洲日本欧美韩国_91国内在线视频_精品国产福利视频

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開(kāi)發(fā)教程 > 詳細(xì)頁(yè)面

運(yùn)用ADO.NET解鎖 Microsoft Access數(shù)據(jù)(一)

運(yùn)用ADO.NET解鎖 Microsoft Access數(shù)據(jù)(一)

更新時(shí)間:2022-06-26 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

使用ADO.NET解鎖 Microsoft Access數(shù)據(jù)

作者:微軟中國(guó)

Microsoft® Office 提供了多種存儲(chǔ)和管理數(shù)據(jù)的功能和工具,例如,數(shù)據(jù)訪問(wèn)對(duì)象 (DAO)、ActiveX® 數(shù)據(jù)對(duì)象 (ADO)、Microsoft Word 郵件合并、Microsoft Excel Web 查詢、Microsoft Query、數(shù)據(jù)訪問(wèn)頁(yè)、Microsoft Access 數(shù)據(jù)項(xiàng)目、Office 數(shù)據(jù)連接、Office 數(shù)據(jù)鏈接等等。而 Microsoft .NET 平臺(tái)則提供了其他的數(shù)據(jù)訪問(wèn)功能和工具,例如,ADO.NET、.NET 數(shù)據(jù)連接和數(shù)據(jù)庫(kù)項(xiàng)目。
在本月的專欄中,我將介紹如何使用 Microsoft Visual Studio® .NET、Microsoft Visual Basic® .NET,特別是如何使用 ADO.NET 來(lái)解鎖和管理 Microsoft Access 數(shù)據(jù)。
確定何時(shí)最適合使用 ADO.NET

既然 Office 已經(jīng)提供了一系列數(shù)據(jù)訪問(wèn)功能和工具,為什么不利用 Office 來(lái)管理它自己的數(shù)據(jù)呢?當(dāng)然,在許多情況下,您可能希望使用適合某個(gè)特定數(shù)據(jù)任務(wù)的內(nèi)置 Office 功能和工具。然而,ADO.NET 提供了一種添加數(shù)據(jù)連接和編寫(xiě)數(shù)據(jù)解決方案代碼的統(tǒng)一方法,這種方法不同于 Office 中的多個(gè)數(shù)據(jù)入口點(diǎn)和數(shù)據(jù)訪問(wèn)庫(kù)。
如果您愿意,仍然可以在 Visual Studio .NET 和 Visual Basic .NET 中調(diào)用 ADO 功能。但鑒于以下原因,與 ADO 相比,ADO.NET 在許多方面都是更好的數(shù)據(jù)訪問(wèn)解決方案。
ADO.NET 允許在數(shù)據(jù)集中包含多個(gè)表,包括這些表之間的關(guān)系。ADO 只允許包含一個(gè)結(jié)果表(雖然此單個(gè)結(jié)果表可能是多個(gè)相關(guān)表上所執(zhí)行的 JOIN 操作的結(jié)果)。
ADO.NET 提供斷開(kāi)連接的數(shù)據(jù)訪問(wèn)。ADO 也可以提供斷開(kāi)連接的數(shù)據(jù)訪問(wèn),但 ADO 主要是為連接的數(shù)據(jù)訪問(wèn)而設(shè)計(jì)的。
ADO.NET 提供了一個(gè)記錄導(dǎo)航范例,允許進(jìn)行無(wú)序的數(shù)據(jù)訪問(wèn)(與有序的 ADO Move 方法不同),并可以利用數(shù)據(jù)表之間的關(guān)系訪問(wèn)各個(gè)數(shù)據(jù)表。
因?yàn)?ADO.NET 使用 XML 傳送數(shù)據(jù),所以能夠提供比 ADO 更豐富的數(shù)據(jù)類型,獲得更好的數(shù)據(jù)訪問(wèn)性能,還可以使數(shù)據(jù)穿過(guò)防火墻傳遞。
ADO.NET 經(jīng)過(guò)了高度優(yōu)化,以配合 Microsoft SQL Server 7.0 和 Microsoft SQL Server 2000 數(shù)據(jù)庫(kù)的使用(反映在 ADO.NET Sql 對(duì)象中),同時(shí)提供對(duì)其他 OLE DB 數(shù)據(jù)源(如 Microsoft Access 數(shù)據(jù)庫(kù))的編程訪問(wèn)(反映在 ADO.NET OleDb 對(duì)象中)。

當(dāng)然,如果希望利用 .NET 中的諸多新功能,就應(yīng)該使用 .NET 數(shù)據(jù)訪問(wèn)功能和工具。有關(guān) .NET 平臺(tái)的詳細(xì)信息,請(qǐng)參閱以前的專欄 Introducing .NET to Office Developers(英文)。
ADO.NET 入門(mén)

圖 1 顯示了使用 ADO.NET 時(shí)要用到的主要對(duì)象。
圖 1:ADO.NET 對(duì)象模型中的主要對(duì)象(來(lái)源:Inside .NET Managed Providers [英文])
這些對(duì)象包括:
OleDbConnection 和 SqlConnection 對(duì)象,代表數(shù)據(jù)庫(kù)連接,類似于 ADO 的 Connection 對(duì)象。
OleDbCommand 和 SqlDbCommand 對(duì)象,代表將要直接發(fā)送到數(shù)據(jù)庫(kù)的 SQL 文本字符串,類似于 ADO 的 Command 對(duì)象。
OleDbDataAdapter 和 SqlDataAdapter 對(duì)象,用于保存數(shù)據(jù)庫(kù)的 SELECT、INSERT、UPDATE 和 DELETE 命令。這些對(duì)象可以作為數(shù)據(jù)庫(kù)和 DataSet 對(duì)象之間的中介?梢允褂 Fill 方法填充 DataSet 對(duì)象并從數(shù)據(jù)庫(kù)斷開(kāi)連接,然后使用 Update 方法重新連接到數(shù)據(jù)庫(kù),并將在 DataSet 對(duì)象中所做的更改保存回?cái)?shù)據(jù)庫(kù)。
DataSet 對(duì)象包含實(shí)際數(shù)據(jù)的副本,類似于斷開(kāi)連接的 ADO Recordset 對(duì)象。DataSet 對(duì)象可以包含 DataRelation 對(duì)象和 Contraint 對(duì)象,這兩個(gè)對(duì)象分別代表數(shù)據(jù)表之間的關(guān)系和這些表中數(shù)據(jù)的約束。DataSet 對(duì)象還可以包含 DataTable 對(duì)象,該對(duì)象又可以包含 DataColumn 和 DataRow 對(duì)象。使用 DataTableMapping 對(duì)象和 DataColumnMapping 對(duì)象,數(shù)據(jù)集可以將數(shù)據(jù)庫(kù)中的表和列映射為相應(yīng)的 DataTable 對(duì)象和 DataColumn 對(duì)象。
SqlDataReader 對(duì)象和 OleDbReader 對(duì)象代表連接的、僅向前移動(dòng)的、只讀數(shù)據(jù)讀取器。如果能夠保持與數(shù)據(jù)庫(kù)的持續(xù)連接,并且只希望讀取數(shù)據(jù)而不進(jìn)行更改,這是非常有用的。在這種情況下,無(wú)需創(chuàng)建 DataSet 對(duì)象。數(shù)據(jù)讀取器類似于連接的、僅向前移動(dòng)的、只讀 ADO Recordset 對(duì)象。

作為參考,在使用 ADO 的 Office Visual Basic for Applications (VBA) 中,可以通過(guò)以下方法打開(kāi)羅斯文示例 Access 數(shù)據(jù)庫(kù),將數(shù)據(jù)從 Products 表復(fù)制到 Recordset 對(duì)象,并報(bào)告記錄集中第一條數(shù)據(jù)記錄的某些數(shù)據(jù):
' Office VBA 和 ADO 代碼 - ADOCode.bas。
Public Sub ADOExample()

' 首先設(shè)置對(duì) ADO 庫(kù)的引用。
Dim objConn As ADODB.Connection
Dim objRS As ADODB.Recordset

Set objConn = New ADODB.Connection

objConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"User ID=Admin;" & _
"Data Source=C:\Program Files\Microsoft " & _
"Office\Office10\Samples\Northwind.mdb"
objConn.Open

Set objRS = objConn.Execute("SELECT * FROM Products")

objRS.MoveFirst

MsgBox Prompt:=objRS.Fields("ProductName").Value & ", " & _
objRS.Fields("UnitsInStock").Value

objRS.Close
objConn.Close

End Sub


如果您以前在 ADO 中進(jìn)行過(guò)編碼,則此 ADO 代碼是非常簡(jiǎn)單的:
聲明 ADO 的 Connection 對(duì)象和 Recordset 對(duì)象,它們分別引用數(shù)據(jù)庫(kù)的連接和數(shù)據(jù)庫(kù)的基礎(chǔ)數(shù)據(jù)。
Connection 對(duì)象的 ConnectionString 屬性設(shè)置為數(shù)據(jù)庫(kù)特定的 String 值,該值代表連接到數(shù)據(jù)庫(kù)(本例中為羅斯文數(shù)據(jù)庫(kù))所需要的信息。
Connection 對(duì)象的 Open 方法建立了實(shí)際的數(shù)據(jù)庫(kù)連接。
Connection 對(duì)象的 Execute 方法從數(shù)據(jù)庫(kù)檢索數(shù)據(jù),并將檢索到的數(shù)據(jù)放入 Recordset 對(duì)象。
Recordset 對(duì)象的 MoveFirst 方法移至記錄集中的第一條記錄。
Recordset 對(duì)象的 Fields 屬性引用記錄中的特定列,而 Field 對(duì)象的 Value 屬性將檢索字段中的實(shí)際數(shù)據(jù)。

作為比較,下面是一些用于控制臺(tái)應(yīng)用程序的 Visual Basic .NET 示例代碼,使用 ADO.NET 執(zhí)行大體相同的操作,但它并不將數(shù)據(jù)放入記錄集,而是由一個(gè) ADO.NET 數(shù)據(jù)讀取器保持與數(shù)據(jù)的連接:
' Visual Basic .NET 和 ADO.NET 代碼 - ADONETCode.vb。
' 使用連接的 ADO.NET 數(shù)據(jù)訪問(wèn)。
' 控制臺(tái)應(yīng)用程序。
Imports System.Data.OleDb

Module Module1

Sub Main()

' 首先設(shè)置對(duì) System.Data.dll 的引用。
Dim objConn As New OleDbConnection _
("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"User ID=Admin;" & _
"Data Source=C:\Program Files\Microsoft" & _
"Office\Office10\Samples\Northwind.mdb")

objConn.Open()

Dim objCmd As New OleDbCommand _
("SELECT * FROM Products", objConn)
Dim objDataReader As OleDbDataReader = objCmd.ExecuteReader

objDataReader.Read()
Console.Write(objDataReader.Item("ProductName") & ", " & _
objDataReader.Item("UnitsInStock"))

End Sub

End Module


下面是該代碼的工作方式:
代碼 Imports System.Data.OleDb 有助于減少訪問(wèn)對(duì)象或?qū)ο蟮某蓡T時(shí)所需的工作量。例如,盡管可以在 ADO 中編寫(xiě) ADODB.Recordset 代碼,但通常并不這樣做,因?yàn)橐呀?jīng)引用了 ADODB 庫(kù)。同樣,盡管可以在 ADO.NET 中編寫(xiě) System.Data.OleDb.OleDbConnection 代碼,但如果已經(jīng)導(dǎo)入了與 OleDbConnection 對(duì)象關(guān)聯(lián)的名稱空間 System.Data.OleDb(假設(shè)我們已預(yù)先設(shè)置了對(duì) System.Data.dll 的引用),也就不需要進(jìn)行編碼。
在 ADO 中,必須首先聲明一個(gè) Connection 類型的對(duì)象,然后使用 ConnectionString 屬性定義連接信息。而在 .NET 中,我們使用參數(shù)化構(gòu)造函數(shù)和初始值設(shè)定項(xiàng)的概念,只需一行代碼便可以聲明 OleDbConnection 類型的對(duì)象,并定義連接信息。
與 ADO 類似,在 ADO.NET 中,使用 OleDbConnection 對(duì)象的 Open 方法建立實(shí)際的數(shù)據(jù)庫(kù)連接。
接下來(lái),聲明 ADO.NET 的 OleDbCommand 對(duì)象,以便存儲(chǔ)從數(shù)據(jù)庫(kù)檢索數(shù)據(jù)的命令。
然后聲明 ADO.NET 的 OleDbDataReader 對(duì)象,從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)。
通過(guò)使用 OleDbCommand 對(duì)象的 ExecuteReader 方法,該代碼允許數(shù)據(jù)讀取器訪問(wèn)數(shù)據(jù)庫(kù)中的特定數(shù)據(jù)。
OleDbDataReader 對(duì)象的 Read 方法將讀取數(shù)據(jù)庫(kù)中的第一條記錄。
Console.Write 方法將數(shù)據(jù)從特定列(使用 OleDbReader 對(duì)象的 Item 屬性)寫(xiě)入命令窗口。

下面是另一段 Visual Basic .NET 示例代碼,執(zhí)行與前面的 ADO.NET 示例相同的操作。但在這一示例中,數(shù)據(jù)將被復(fù)制到 ADO.NET 數(shù)據(jù)集,然后斷開(kāi)與數(shù)據(jù)庫(kù)的連接:
' Visual Basic .NET 和 ADO.NET 代碼 - ADONETCode.vb。
' 使用斷開(kāi)連接的 ADO.NET 數(shù)據(jù)訪問(wèn)。
' 控制臺(tái)應(yīng)用程序。
Imports System.Data.OleDb

Module Module1

Sub Main()

' 首先設(shè)置對(duì) System.Data.dll 的引用。
Dim objConn As New OleDbConnection _
("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"User ID=Admin;" & _
"Data Source=C:\Program Files\Microsoft" & _
"Office\Office10\Samples\Northwind.mdb")

objConn.Open()

Dim objAdapter As New OleDbDataAdapter _
("SELECT * FROM Products", objConn)
Dim objDataSet As New DataSet()

objAdapter.Fill(objDataSet)

With objDataSet.Tables("Table").Rows(0)

Console.Write(.Item("ProductName") & ", " _
& .Item("UnitsInStock"))

End With

End Sub

End Module


下面是此代碼與前一 ADO.NET 示例的區(qū)別:
與 OleDbDataReader 對(duì)象類似,OleDbAdapter 對(duì)象也是從數(shù)據(jù)庫(kù)訪問(wèn)數(shù)據(jù),但這里使用了 OleDbAdapter 對(duì)象的 Fill 方法,將數(shù)據(jù)表和它們之間的關(guān)系從數(shù)據(jù)庫(kù)復(fù)制到 DataSet 對(duì)象。
DataSet 對(duì)象的 Tables 屬性訪問(wèn)數(shù)據(jù)集的所有表,而 Rows 屬性訪問(wèn)數(shù)據(jù)集中給定表的單個(gè)行。
可以在 Office VBA 中使用 ADO.NET 嗎?

雖然您可能希望在 Office VBA 中使用 ADO.NET 的新功能,但目前還不能這樣做。這是因?yàn)椋绻\(yùn)行 RegAsm.exe(.NET Frameworks SDK 中的程序集注冊(cè)工具)將 System.Data.dll 注冊(cè)為 COM(Office VBA 基于此技術(shù)),然后嘗試從 Office 引用生成的類型庫(kù)文件,則不會(huì)在 Office Visual Basic 的對(duì)象瀏覽器中顯示任何成員。這是因?yàn)?COM 不能識(shí)別核心的私有 ADO.NET 成員和參數(shù)化的構(gòu)造函數(shù)。因此,至少在目前,還只能繼續(xù)在 Office VBA 中使用 ADO。
使用 Visual Studio .NET 數(shù)據(jù)訪問(wèn)工具

Visual Studio .NET 提供了許多便利工具用于訪問(wèn) Office 數(shù)據(jù),包括創(chuàng)建可重復(fù)使用的數(shù)據(jù)連接、數(shù)據(jù)庫(kù)項(xiàng)目以及數(shù)據(jù)表單向?qū)А?
數(shù)據(jù)連接

數(shù)據(jù)連接允許您一次性定義數(shù)據(jù)庫(kù)連接的詳細(xì)信息,然后在多個(gè)解決方案中重復(fù)使用該信息。下面的示例介紹如何在 Visual Studio .NET 中創(chuàng)建可重復(fù)使用的數(shù)據(jù)連接:
在 Tools(工具)菜單上,單擊 Connect to Database(連接到數(shù)據(jù)庫(kù))。將顯示 Data Link Properties(數(shù)據(jù)鏈接屬性)對(duì)話框。
在 Provider(提供程序)選項(xiàng)卡上,單擊相應(yīng)的數(shù)據(jù)提供程序,然后單擊 Next(下一步)。例如,要連接到 Access 的羅斯文示例數(shù)據(jù)庫(kù),請(qǐng)單擊 Microsoft Jet 4.0 OLE DB Provider(Microsoft Jet 4.0 OLE DB 提供程序)。
在所選數(shù)據(jù)提供程序的 Connection(連接)選項(xiàng)卡中填入信息。例如,對(duì)于羅斯文示例數(shù)據(jù)庫(kù),請(qǐng)單擊 Select or enter a database name(選擇或輸入數(shù)據(jù)庫(kù)名稱)框旁邊的 ... 按鈕,瀏覽至 Northwind.mdb,然后單擊 Open(打開(kāi))。
單擊 Test Connection(測(cè)試連接)。如果連接成功,單擊 OK(確定)。否則,請(qǐng)重新檢查 Connection(連接)選項(xiàng)卡上的信息。
單擊 OK(確定),關(guān)閉 Data Link Properties(數(shù)據(jù)鏈接屬性)對(duì)話框。

這樣就有了一個(gè)可以添加到 Visual Studio .NET 項(xiàng)目的可重復(fù)使用的數(shù)據(jù)連接。
下面基于這些步驟給出一個(gè)示例,說(shuō)明如何創(chuàng)建 ADO.NET 對(duì)象,這些對(duì)象能夠與 Server Explorer(服務(wù)器資源管理器)窗口中的現(xiàn)有數(shù)據(jù)連接進(jìn)行交互操作:
在 Windows 應(yīng)用程序項(xiàng)目的 Designer(設(shè)計(jì)器)視圖中,在 View(視圖)菜單上,單擊 Server Explorer(服務(wù)器資源管理器),展開(kāi)所需的數(shù)據(jù)連接,然后將表、視圖或存儲(chǔ)過(guò)程拖動(dòng)到設(shè)計(jì)界面上。Visual Studio .NET 將創(chuàng)建一個(gè) OleDbConnection/SqlConnection 對(duì)象(取決于數(shù)據(jù)庫(kù)的類型)、一個(gè) OleDbDataAdapter/SqlDataAdapter 對(duì)象和四個(gè) OleDbCommand/SqlCommand 對(duì)象,用于選擇、插入、更新和刪除數(shù)據(jù)。
右擊 OleDbDataAdapter/SqlDataAdapter 對(duì)象,并單擊 Generate Dataset(生成數(shù)據(jù)集)。在本例中,選擇 New(新建),保留 DataSet1 的默認(rèn)設(shè)置,選中要添加到數(shù)據(jù)集的表,選中 Add this dataset to the designer(將此數(shù)據(jù)集添加到設(shè)計(jì)器中),然后單擊 OK(確定)。Visual Studio .NET 將創(chuàng)建一個(gè) DataSet 對(duì)象。
右擊 OleDbDataAdapter/SqlDataAdapter 對(duì)象,并單擊 Preview Data(預(yù)覽數(shù)據(jù)),單擊 Fill Dataset(填充數(shù)據(jù)集),然后單擊 Close(關(guān)閉)。
注意:在 Visual Studio .NET Beta 2 中,不會(huì)顯示 Fill Dataset(填充數(shù)據(jù)集)按鈕,以便生成實(shí)際填充 Dataset 對(duì)象的代碼?赡苄枰謩(dòng)向 Form_Load 或 Page_Load 事件添加代碼,如下所示:Me.OleDbDataAdapter1.Fill(DataSetName11)。

下面的示例介紹如何在 Windows 窗體中添加數(shù)據(jù)網(wǎng)格,并綁定到前一示例中生成的現(xiàn)有數(shù)據(jù)集:
在 Designer(設(shè)計(jì)器)視圖中,單擊工具欄上的 Windows Forms(Windows 窗體)選項(xiàng)卡,然后雙擊 DataGrid。
在 DataGrid1 的 Properties(屬性)窗口中,為 DataSource 屬性選擇 DataSet11,然后為 DataMember 屬性選擇表。
運(yùn)行應(yīng)用程序。
如果 DataGrid1 中未顯示數(shù)據(jù),請(qǐng)?jiān)?Form_Load 事件中添加類似如下的代碼:Me.OleDbDataAdapter1.Fill(DataSetName11)。
提示:要在 Server Explorer(服務(wù)器資源管理器)窗口中沒(méi)有現(xiàn)有數(shù)據(jù)連接的情況下創(chuàng)建 ADO.NET 對(duì)象,請(qǐng)執(zhí)行以下步驟:
在設(shè)計(jì)視圖中,單擊工具欄上的 Data(數(shù)據(jù))選項(xiàng)卡。請(qǐng)注意,這在 Code(代碼)視圖中無(wú)效。
將 ADO.NET 對(duì)象拖動(dòng)到設(shè)計(jì)界面上。
右擊 ADO.NET 對(duì)象,并單擊 Properties(屬性)。
填寫(xiě)所選 ADO.NET 對(duì)象的相應(yīng)屬性。
數(shù)據(jù)庫(kù)項(xiàng)目

Visual Studio .NET 數(shù)據(jù)庫(kù)項(xiàng)目允許您快速創(chuàng)建面向數(shù)據(jù)庫(kù)的解決方案。下面的示例介紹如何在 Visual Studio .NET 中創(chuàng)建數(shù)據(jù)庫(kù)項(xiàng)目:
在 File(文件)菜單上,指向 New(新建),然后單擊 Project(項(xiàng)目)。
在 Project Types(項(xiàng)目類型)窗格中,展開(kāi) Other Projects(其他項(xiàng)目),然后單擊 Database Projects(數(shù)據(jù)庫(kù)項(xiàng)目)。
在 Templates(模板)窗格中,單擊 Database Project(數(shù)據(jù)庫(kù)項(xiàng)目)。
填寫(xiě) Name(名稱)和 Location(位置)框,然后單擊 OK(確定)。
單擊 Add to Solution(添加到解決方案)按鈕將此項(xiàng)目添加到現(xiàn)有解決方案;或單擊 Close Solution(關(guān)閉解決方案)按鈕,創(chuàng)建獨(dú)立的解決方案。
在 Add Database Reference(添加數(shù)據(jù)庫(kù)引用)對(duì)話框中,選擇現(xiàn)有的數(shù)據(jù)連接,或單擊 Add New Reference(添加新引用),以添加新的數(shù)據(jù)連接。如果單擊 Add New Reference(添加新引用),請(qǐng)執(zhí)行上一節(jié)中的步驟完成 Data Link Properties(數(shù)據(jù)鏈接屬性)對(duì)話框。如果使用此方法添加新的數(shù)據(jù)連接,數(shù)據(jù)連接將顯示在 Server Explorer(服務(wù)器資源管理器)窗口中。

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
欧洲亚洲精品在线| 日韩av黄色网址| 精彩视频一区二区三区| 久久久久久久一区二区| 国产综合18久久久久久| 欧美wwwwww| 国产欧美精品一区二区三区-老狼| 成人嘿咻视频免费看| 亚洲国产精品字幕| 无码人妻丰满熟妇精品区| 久久久久久久国产精品毛片| a级一a一级在线观看| 亚洲av成人精品一区二区三区| 精品国产乱码久久久久久免费| 欧美一区二区三区在线免费观看| 日韩 欧美 自拍| 欧洲在线免费视频| 国产精品久久在线| 欧洲毛片视频| 久久xxxx精品视频| 亚洲毛片欧洲毛片国产一品色| 欧美激情自拍| 一区二区亚洲精品| 韩国日本一区二区三区| 欧美日韩精品专区| 国产男女猛烈无遮挡| 亚洲人成网站999久久久综合| 欧美日韩亚洲一二三| 欧美伦理片在线看| 久久久久久免费看| 99国产在线视频| 国产麻豆入在线观看| 一本色道久久99精品综合| 成人免费视频在线观看超级碰| 日本一区二区免费看| 欧美日韩一区不卡| 捷克做爰xxxⅹ性视频| 国产精品中文字幕欧美| 中文字幕一区二区三区在线播放| 久久成人精品无人区| 久久天堂夜夜一本婷婷麻豆| 亚洲性av在线| 欧美性猛交xxxxx少妇| 欧美日韩免费区域视频在线观看| 国产在线观看成人| 欧美激情精品久久久| 色老板在线视频| 555www色欧美视频| 久久久久88色偷偷| 亚洲国产精品影视| 一区二区视频免费看| 天堂аⅴ在线最新版在线| 丝袜亚洲欧美日韩综合| 欧美性精品220| 26uuu亚洲电影在线观看| missav|免费高清av在线看| 久久久精品视频网站| 一区二区视频播放| 欧美精品一卡二卡| 亚洲欧美视频在线| 成人精品电影| 污污在线观看| 簧片在线观看| av动漫免费看| 亚洲少妇一区二区| 欧美日韩黑人| 精品久久久久中文慕人妻| 日本在线观看免费视频| 日韩一二三区在线观看| 免费观看a级片| 亚洲人成欧美中文字幕| h色视频在线观看| 中文字幕一区二区三区四区久久| 久久久久资源| 国产免费观看高清视频| 日本a级片在线观看| 国产不卡一区二区三区在线观看| 国产日产欧美精品一区二区三区| 欧美成人伊人久久综合网| 国产超碰97| 瑟瑟在线观看| 日本欧美一区二区三区乱码| a天堂资源在线| a在线观看免费| 欧美日韩精品免费观看| 69精品久久久| 视频1区2区3区| 欧美在线观看网站| 欧美成人aaa| 91嫩草|国产丨精品入口| 免费不卡欧美自拍视频| 四虎4545www国产精品| 91久久夜色精品国产按摩| 毛片在线播放a| 黄色在线观看视频网站| 日本不卡1234视频| 欧美日一区二区三区在线观看国产免| 在线观看日产精品| 日韩三区在线观看| 国产在线拍揄自揄拍无码视频| 91插插插插插插| √新版天堂资源在线资源| 黄页网站免费观看| 亚洲男子天堂网| 久久免费精品日本久久中文字幕| 国产91丝袜美女在线播放| 人妻大战黑人白浆狂泄| 每日在线更新av| 欧美四级电影在线观看| 欧美momandson| 久久成人精品电影| 裸模一区二区三区免费| 99这里只有精品视频| 情趣视频网站在线免费观看| 天堂网av在线播放| 色一情一乱一伦| 成人网视频在线观看| 神马午夜一区二区| 日韩 欧美 中文| 国产精品永久| 三上悠亚在线一区二区| 国产在线播放你懂的| 亚洲剧场午夜在线观看| 亚洲第一区中文99精品| 91色porny在线视频| 欧美一级视频在线播放| 久久蜜桃av一区二区天堂| 免费精品一区二区| 国产乱码精品一区二区三区忘忧草| 九义人在线观看完整免费版电视剧| 欧美在线不卡一区| 久久久精品福利| 日韩免费高清视频| 久久爱www| 久久久久久久久久一区| 美国黄色一级毛片| 2019亚洲日韩新视频| 久久国产高清| 一卡二卡三卡四卡五卡| 色综合99久久久无码国产精品| 亚洲黄色小说网址| 国产视频网址在线| 久久久不卡网国产精品一区| 一区二区三区四区免费| 国产日韩欧美一区二区三区视频| 女同性互吃奶乳免费视频| 奇米影视7777精品一区二区| 尤物视频在线| 一区不卡字幕| 久久亚洲精品人成综合网| 国产剧情在线观看| 神马一区二区三区| 免费看h的网站| 欧美xxx网站| 欧美性xxxxx极品娇小| 中午字幕在线观看| 日韩精品亚洲一区| 日产精品99久久久久久| 在线看的你懂得| 欧美精品免费在线| 蜜臀久久精品久久久用户群体| 日韩二区在线观看| 色资源在线观看| 另类激情亚洲| 在线亚洲伦理| 黄色网页免费看| 国产91精品精华液一区二区三区| 国产69精品久久久久99| www.com毛片| 国产一区二区你懂的| 亚洲精品乱码久久久久久久| 亚洲天堂成人| 摸摸摸bbb毛毛毛片| 天堂资源在线亚洲视频| 久久国产精品99国产| 日韩一卡二卡在线| 国产精品一区二区入口九绯色| 国产精品日韩一区| 欧美一级淫片| 久久亚洲国产成人亚| 97视频色精品| 91制片厂免费观看| 国产一区二区三区在线观看精品| 久久国产精品久久久久久久久久| 老牛影视免费一区二区| 日韩精品视频一二三| 激情亚洲小说| xxxxwww一片| 黄视频免费在线看| 亚洲欧美另类视频| 日韩精品免费在线| 欧美高清在线视频观看不卡| 天天综合成人网| 日韩中文字幕亚洲精品欧美| 少妇久久久久久久| 国产欧美一区二区三区四区| 欧美日韩精品不卡| 日本一区高清不卡| 玖玖在线播放| 亚洲成人免费电影| 99re6热在线精品视频| 妞干网免费在线视频| 国产91久久精品一区二区| 欧美男男青年gay1069videost| 黄色工厂这里只有精品| 欧美日韩一区 二区 三区 久久精品| 中文字幕剧情在线观看一区| 日韩精品视频在线免费观看| 黄色片在线免费| 亚洲狠狠婷婷综合久久久久图片| 久久久精彩视频| 欧美日韩在线亚洲一区蜜芽| av电影在线观看一区| 亚洲高清123| 在线观看视频免费| 欧美一级淫片免费视频魅影视频| 成人欧美在线| 芒果视频成人app| 羞羞网站在线看| 人与牲动交xxxxbbb| 精品一区二区三区免费播放| 精品少妇无遮挡毛片| 韩日午夜在线资源一区二区| 日韩精品视频久久| 国产偷国产偷亚洲高清人白洁| 欧美成人免费一级人片100| 亚洲人一区二区| 色视频线观看在线播放| 裸体丰满少妇做受久久99精品| 国产精品免费看久久久无码| 午夜久久久久久久久| 午夜美女福利视频| 在线天堂www在线国语对白| 日本成人一区| 国产欧美日韩视频一区二区| 18禁免费无码无遮挡不卡网站| 美女国产一区二区| 91午夜在线播放| 欧美精品大片| 中文字幕第4页| 视频一区二区视频| 香蕉视频黄色在线观看| 国产精品123区| 一级黄色特级片| 视频在线一区二区三区| 草裙成人精品一区二区三区| 少妇人妻在线视频| www.欧美.com| 青青草视频在线免费直播| 好吊色视频一区二区| 爱爱精品视频| 国模私拍视频一区| 国偷自产视频一区二区久| 亚洲精品成人悠悠色影视| 一区二区高清免费观看影视大全| av免费观看一区二区| 黄瓜视频在线免费观看| 中文乱码免费一区二区三区下载| 97久久精品人人澡人人爽缅北| 26uuu欧美日本| 欧美14一18处毛片| 亚洲女成人图区| 青青草手机在线视频| 51国产偷自视频区视频| 国产精品第157页| 骚虎视频欧美| 久久成人久久爱| 日韩国产成人精品| 婷婷五月在线视频| 在线观看成人动漫| av日韩一区二区三区| www.亚洲人.com| 午夜精品久久久久久久蜜桃| 国产三级三级三级精品8ⅰ区| 日韩一级免费片| 色视频成人在线观看免| 韩国视频一区二区| 欧美成人黄色网| 一区二区三区久久久久| 七七成人影院| 欧美无人区码suv| 欧美天堂一区二区| 日本高清视频精品| 91亚洲国产成人精品一区二区三| 欧美专区亚洲专区| 色www亚洲国产阿娇yao| 人妻激情另类乱人伦人妻| 久久久中精品2020中文| 蜜桃av免费看| 精品久久一区| 亚洲精品国产成人影院| 91麻豆精品成人一区二区| 超碰超碰97| 亚洲国产另类久久久精品极度| 992tv成人国产福利在线| 欧美黑人欧美精品刺激| 91深夜福利视频| 成人美女免费网站视频| 无码精品一区二区三区在线播放| 99re视频在线| 久久久亚洲影院你懂的| 国产aⅴ精品一区二区四区| free性护士videos欧美| 日本中文字幕一区二区| 中日韩午夜理伦电影免费| 中文字幕在线第一页| 7777奇米亚洲综合久久| 欧美一级做一级爱a做片性| 国产一级淫片a| 国内综合精品午夜久久资源| 在线免费国产视频| 亚洲资源中文字幕| 韩国中文字幕在线| 不卡亚洲精品| 亚洲天堂av免费在线观看| 无码人妻精品一区二区三区99不卡| 大香煮伊手机一区| 国产精成人品2018| 在线一区免费| 美女日批在线观看| 黑鬼大战白妞高潮喷白浆| 黄色成人在线网| www.91在线观看| 欧美午夜精品理论片a级大开眼界| 欧美色视频一区| 欧美精彩视频一区二区三区| 国产按摩一区二区三区| 视频一区二区精品的福利|