欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

在VB中兼容非ACCESS數(shù)據(jù)庫的技巧_Access數(shù)據(jù)庫教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:給你的數(shù)據(jù)庫文件減肥
  在數(shù)據(jù)庫的設(shè)計(jì)過程中經(jīng)常要添加、刪除數(shù)據(jù)庫對(duì)象,這會(huì)使數(shù)據(jù)庫內(nèi)部留有許多碎片,不能有效地利用磁盤空間,文件會(huì)逐漸增大。這有點(diǎn)象文件系統(tǒng)經(jīng)過多次的增刪操作,會(huì)導(dǎo)致文件碎片,浪費(fèi)磁

本文從VB數(shù)據(jù)庫體系結(jié)構(gòu)的角度出發(fā),結(jié)合一個(gè)具體實(shí)例,闡述了在VB中兼容非ACCESS格式數(shù)據(jù)庫的具體方法和技巧。

關(guān)鍵詞:VB、非ACCESS數(shù)據(jù)庫、數(shù)據(jù)存取對(duì)象

一個(gè)完整的數(shù)據(jù)庫管理系統(tǒng)(DBMS)應(yīng)是能兼容市面上各種較流行數(shù)據(jù)格式的系統(tǒng),它充分考慮了不同用戶的實(shí)際要求。鑒于目前市面上有多種數(shù)據(jù)庫格式(如Foxpro、DBase、Paradox等)流行,因而在VB數(shù)據(jù)庫應(yīng)用程序中兼容非ACCESS數(shù)據(jù)庫就顯得尤為重要了。

作為一種流行的開發(fā)平臺(tái),VB提供了強(qiáng)大的數(shù)據(jù)庫功能。主要有以下三種:數(shù)據(jù)控件法:使用數(shù)據(jù)存取對(duì)象(Data Access Object )法;直接調(diào)用ODBC 2.0 API接口函數(shù)法。其中調(diào)用數(shù)據(jù)存取對(duì)象的方法相對(duì)其它兩種方法具有方便靈活、功能強(qiáng)大的突出優(yōu)點(diǎn)。本文即從調(diào)用數(shù)據(jù)庫存取對(duì)象的方法出發(fā),實(shí)現(xiàn)了非ACCESS格式數(shù)據(jù)庫(以FoxPro數(shù)據(jù)庫為例)的建新庫、拷貝數(shù)據(jù)庫結(jié)構(gòu)、動(dòng)態(tài)調(diào)入等操作,闡述了從編程技巧上彌補(bǔ)VB對(duì)這些外來數(shù)據(jù)庫支持不足的可行性。

一、VB數(shù)據(jù)庫的體系結(jié)構(gòu)

VB數(shù)據(jù)庫的核心結(jié)構(gòu)是所謂的MicroSoft JET數(shù)據(jù)庫引擎,它為VB與數(shù)據(jù)庫的接口提供了基本的方法和手段。JET引擎被Visual Basic、Microsoft ACCESS和其它Microsoft產(chǎn)品所共享。因而在VB中Access數(shù)據(jù)庫格式是一種標(biāo)準(zhǔn)的內(nèi)置格式,所有的非ACCESS數(shù)據(jù)庫都被稱為外來數(shù)據(jù)庫。

JET引擎的作用就像是一塊“面板”,在其上可以插入多種索引順序存取方法(即ISAM)數(shù)據(jù)驅(qū)動(dòng)程序。這就是VB對(duì)非ACCESS數(shù)據(jù)庫具有豐富支持的真正原因。VB專業(yè)版中提供了FoxPro、dBASE(或Xbase)、Paradox、Btrieve等數(shù)據(jù)庫的ISAM驅(qū)動(dòng)程序,這就使得VB能支持這些數(shù)據(jù)庫格式。另外,其他的許多兼容ISAM的驅(qū)動(dòng)程序也可以通過從廠商的售后服務(wù)得到。因而從理論上說,VB能支持所有兼容ISAM的數(shù)據(jù)庫格式(前提是只需獲得這些數(shù)據(jù)庫的ISAM驅(qū)動(dòng)接口程序)。

二、使用非ACCESS數(shù)據(jù)庫時(shí)的參數(shù)設(shè)置及配置文件的參數(shù)讀取

值得注意的是,大多數(shù)的程序員都不注重?cái)?shù)據(jù)庫配置文件的使用,殊不知這是極為重要的。

如果在VB的程序中使用了數(shù)據(jù)庫的操作,將應(yīng)用程序生成EXE文件或打包生成安裝程序后,則必須提供一個(gè)數(shù)據(jù)庫配置(.INI)文件,在INI文件中可以對(duì)不同類型的數(shù)據(jù)庫進(jìn)行設(shè)置。如果找不到這個(gè)INI文件,將會(huì)導(dǎo)致不能訪問數(shù)據(jù)庫。通常情況下,INI文件的文件名和應(yīng)用程序的名稱相同,所以如果沒有指明,VB的程序會(huì)在Windows子目錄中去找和應(yīng)用程序同名的INI文件。可以使用VB中的SetDataACCESSOptions語句來設(shè)置INI文件。

SetDataACCESSOptions語句的用法如下:

SetDataACCESSOptions 1,IniFileName

其中IniFileName參數(shù)指明的是INI文件的帶路徑的文件名。

值得注意的是,當(dāng)應(yīng)用程序找不到這個(gè)INI文件時(shí),或在調(diào)用OpenDataBase函數(shù)時(shí)對(duì)其Connect參數(shù)值沒有設(shè)定為VB規(guī)定的標(biāo)準(zhǔn)值,如對(duì)FoxPro 2.5格式設(shè)定為了“FoxPro;”(應(yīng)為“FoxPro 2.5;”),或者沒有安裝相應(yīng)的ISAM驅(qū)動(dòng)程序,則此時(shí)VB會(huì)顯示一條錯(cuò)誤信息“Not Found Installable ISAM”。

通常,INI文件在應(yīng)用程序分發(fā)出去以前已經(jīng)生成,或者在安裝時(shí)動(dòng)態(tài)生成,也可以在應(yīng)用程序中自己生成。通常這種INI文件中有“[Options]”、“[ISAM]”、“[Installed ISAMs]”、“[FoxPro ISAM]”、“[dBASE ISAM]”、“[Paradox ISAM]”等設(shè)置段,對(duì)于一個(gè)完整的應(yīng)用程序則還應(yīng)有一個(gè)屬于應(yīng)用程序自己的設(shè)置段如“[MyDB]”。可在其中設(shè)置DataType、Server、DataBase、OpenOnStartup、DisplaySQL、QueryTimeOut等較為重要的數(shù)據(jù)庫參數(shù),并以此限定應(yīng)用程序一般的運(yùn)行環(huán)境。

Windows API接口函數(shù)在Win95系統(tǒng)提供的動(dòng)態(tài)鏈接庫中提供了一個(gè)OSWritePrivateProfileString函數(shù),此函數(shù)能按Windows下配置文件(.INI)的書寫格式寫入信息。

在通常情況下,應(yīng)用程序還需要在運(yùn)行時(shí)讀取配置文件內(nèi)相關(guān)項(xiàng)的參數(shù)。比如PageTimeOut(頁加鎖超時(shí)時(shí)限)、MaxBufferSize(緩沖區(qū)大小)、LockRetry(加鎖失敗時(shí)重試次數(shù))等參數(shù),通過對(duì)這些參數(shù)的讀取對(duì)應(yīng)用程序運(yùn)行環(huán)境的設(shè)定、潛在錯(cuò)誤的捕獲等均會(huì)有很大的改善。
設(shè)此應(yīng)用程序的數(shù)據(jù)庫配置文件為MyDB.INI,則具體過程如下:

以下為引用的內(nèi)容:
Funtion GetINIString$( Byval Fname$,Byval szItem$,Byval szDeFault$ )
’此自定義子函數(shù)實(shí)現(xiàn)INI文件內(nèi)設(shè)置段內(nèi)參數(shù)的讀取
Dim Tmp As String, x As Integer
Tmp = String( 2048,32 )
x = OSGetPrivateProfileString( Fname$,szItem$,szDefault$,Tmp,Len(Tmp),“MyDB.INI”)
GetINIString = Mid$( Tmp,1,x )
End Function

通過此函數(shù)就能實(shí)現(xiàn)對(duì)各種數(shù)據(jù)庫格式的讀取。

三、調(diào)用數(shù)據(jù)存取對(duì)象對(duì)非ACCESS數(shù)據(jù)庫編程的方法及其實(shí)例

VB專業(yè)版中使用數(shù)據(jù)庫存取對(duì)象變量(DAO)的方法最具有功能強(qiáng)大、編程靈活的特點(diǎn)。它能夠在程序中存取ODBC 2.0的管理函數(shù);可以控制多種記錄集類型:Dynaset,Snapshot及Table記錄集合對(duì)象;可以存儲(chǔ)過程和查詢動(dòng)作;可以存取數(shù)據(jù)庫集合對(duì)象,例如TableDefs,F(xiàn)ields,Indexes及QueryDefs;具有真正的事物處理能力。這種方法對(duì)數(shù)據(jù)庫處理的大多數(shù)情況都非常適用。

從VB的程序代碼的角度來看,提供給VB程序員的記錄集對(duì)象(RecordSet)同所使用的數(shù)據(jù)庫格式及類型是相互獨(dú)立的。即對(duì)FoxPro等數(shù)據(jù)庫仍然可以使用眾多的數(shù)據(jù)庫存取對(duì)象變量,這就為非ACCESS數(shù)據(jù)庫的訪問提供了最重要的前提和方法。

在VB中從一種數(shù)據(jù)庫類型轉(zhuǎn)化為另一種數(shù)據(jù)庫類型幾乎不需要或只需要很少的代碼修改。而且,盡管dBASE、Paradox本身的DDL(Data Definition Language,即數(shù)據(jù)定義語言)和DML(Data Manipulation Language,即數(shù)據(jù)操縱語言)是非結(jié)構(gòu)化查詢的,但它們?nèi)匀豢梢允褂肰B的SQL語句和JET引擎來操縱。

因而對(duì)FoxPro等非ACCESS數(shù)據(jù)庫而言,調(diào)用數(shù)據(jù)庫存取對(duì)象的方法同樣也是一種最佳的選擇。

(一)非ACCESS數(shù)據(jù)庫的新建及庫結(jié)構(gòu)的修改

VB專業(yè)版中的數(shù)據(jù)庫存取對(duì)象變量可以分為兩類,一類用于數(shù)據(jù)庫結(jié)構(gòu)的維護(hù)和管理,另一類用于數(shù)據(jù)的存取。其中表示數(shù)據(jù)庫結(jié)構(gòu)時(shí)可以使用下面的對(duì)象:DataBase、TableDef、Field、Index,以及三個(gè)集合(Collection):TableDefs、Fields和Indexes。每一個(gè)集合都是由若干個(gè)對(duì)象組成的,這些數(shù)據(jù)對(duì)象的集合可以完全看作是一個(gè)數(shù)組,并按數(shù)組的方法來調(diào)用。

一旦數(shù)據(jù)庫對(duì)象建立后,就可以用它對(duì)數(shù)據(jù)庫的結(jié)構(gòu)進(jìn)行修改和數(shù)據(jù)處理。

對(duì)于非ACCESS數(shù)據(jù)庫,大部分都是對(duì)應(yīng)于一個(gè)目錄,所以可以使用VB的MkDir語句先生成一個(gè)目錄,亦即新建一個(gè)數(shù)據(jù)庫。而每一個(gè)非ACCESS數(shù)據(jù)庫文件可看作是此目錄下的一個(gè)數(shù)據(jù)表(Table),但實(shí)際上它們是互相獨(dú)立的。

下面是新建一個(gè)FoxPro 2.5格式數(shù)據(jù)庫的程序?qū)嵗?/p>

以下為引用的內(nèi)容:

Sub CreateNew ( )
Dim Db1 As database, Td As TableDefs
Dim T1 As New Tabledef,F(xiàn)1 As New Field, F2 As New Field, F3 As New Field
Dim Ix1 As New Index
Dim Path As String
Const DB_TEXT = 10,DB_INTEGER = 3
ChDir "\"
Path$ = InputBox( "請(qǐng)輸入新路徑名:", "輸入對(duì)話框" )
MkDir Path$ ’新建一個(gè)子目錄
Set Db1 = OpenDatabase(Path$, True, False, "FoxPro 2.5;")
Set Td = Db1.TableDefs
T1.Name = "MyDB" ’新建一個(gè)數(shù)據(jù)表,數(shù)據(jù)表名為MyDB
F1.Name = "Name", F1.Type = DB_TEXT, F1.Size = 20
F2.Name = "Class", F2.Type = DB_TEXT, F2.Size = 20
F3.Name = "Grade", F3.Type = DB_INTEGER
T1.Fields.Append F1 ’向數(shù)據(jù)表中添加這些字段
T1.Fields.Append F2
T1.Fields.Append F3
Ix1.Name = "Name" ,Ix1.Fields = "Name", Ix1.Primary = True ’新建索引
T1.Indexes.Append Ix1 ’向數(shù)據(jù)庫的Indexes集合中添加新的索引
Td.Append T1 ’向TableDefs集合中添加新表
Db1.Close ’必須先關(guān)閉數(shù)據(jù)庫對(duì)象再退出
End Sub

在此段程序中值得注意的是,對(duì)非Access數(shù)據(jù)庫的新建不用CreateDatabase函數(shù),而是用OpenDatabase函數(shù),這點(diǎn)與Access數(shù)據(jù)庫大不一樣,但也僅僅是針對(duì)非ACCESS數(shù)據(jù)庫而言才能用OpenDatabase函數(shù)來新建一個(gè)數(shù)據(jù)庫對(duì)象。

在VB中,外來數(shù)據(jù)庫的不同格式只在OpenDatabase函數(shù)的最后一個(gè)參數(shù)Connect中有所體現(xiàn),不同格式的外來數(shù)據(jù)庫其Connect參數(shù)值也不同,除此以外,在VB專業(yè)版中其編程的方法和步驟及技巧是基本相同的。

新建子目錄后,不能用ChDir語句進(jìn)入它,否則會(huì)出現(xiàn)“‘MyDB’ is not a valid path”的錯(cuò)誤。同時(shí),對(duì)F1、F2、F3等新建字段對(duì)象的定義也必須分別定義,否則會(huì)出現(xiàn)“Element not defined”(變量未定義)的錯(cuò)誤。

通過一定的編程技巧還可以實(shí)現(xiàn)非ACCESS數(shù)據(jù)庫的庫結(jié)構(gòu)的拷貝,下面是一段相應(yīng)的程序。

Function GetPos( TFname$ ) ’此自定義函數(shù)完成對(duì)帶路徑文件名中最后一個(gè)“\”符號(hào)的定位

以下為引用的內(nèi)容:

Dim I As Integer,Tmp As String
Tmp$ = TFname$
For I = 0 To 255
Pos% = Pos% InStr( 1, Tmp$, "\" )
E1% = InStr( 1, Tmp$, "\" )
Tmp$ = Right$( Tmp$, Len(TFname$) - Pos% )
If E1% = 0 Then ’找到最后一個(gè)“\”符號(hào)的位置,并記下來
GetPos = Pos%
Exit For
End If
Next I
End Funtion
Sub CopyStruc( )
Dim Db1 As database, Ds1 As Dynaset,Td As TableDefs, Fld As Fields
Dim Fname,SourceF,DestF,Path As String,Pos1 As Integer
CMD1.Filter = "FoxPro數(shù)據(jù)庫文件(*.DBF)|*.DBF|所有文件|*.*" ’CMD1為一個(gè)對(duì)話框的控制名
CMD1.DialogTitle = "調(diào)入Ms FoxPro數(shù)據(jù)庫文件"
CMD1.FilterIndex = 1
CMD1.Action = 1
DestF$ = InputBox$( "請(qǐng)輸入目標(biāo)文件名:", "輸入對(duì)話框" )
If CMD1.FileName = “ ”Or DestF$ = " " Then
MsgBox "源文件或目標(biāo)文件名為空"
Exit Sub
Else
SourceF$ = CMD1.Filename
End If
FileCopy SourceF$, DestF$
Pos1% = GetPos( SourceF$ )
Path$ = Left$( SourceF$, Pos1% ) ’獲得源文件所在的路徑名
Fn$ = Left$( DestF$, InStr(1, DestF$, ".") - 1 ) ’獲得新文件的數(shù)據(jù)庫名
’Fn$為實(shí)際的Foxpro數(shù)據(jù)庫名,也即CreateDynaset函數(shù)內(nèi)的source屬性值
Set Db1 = OpenDatabase( Path$, True, False, "FoxPro 2.5;" )
Set Ds1 = Db1.CreateDynaset( Fn$ )
If Ds1.EOF And Ds1.BOF Then ’數(shù)據(jù)庫內(nèi)的無記錄則退出
TotalNum% = 0
MsgBox "此數(shù)據(jù)表為空表!"
Exit Sub
End If
’刪除記錄,保留庫結(jié)構(gòu)
Ds1.MoveFirst
Do
Ds1.Delete
Ds1.MoveNext
Loop Until Ds1.EOF
End Sub

可見,拷貝庫結(jié)構(gòu)的方法在于把一個(gè)已存在的數(shù)據(jù)庫拷貝到一個(gè)新文件中,然后再刪除新文件內(nèi)的所有記錄,保留其庫結(jié)構(gòu),得到的就是一個(gè)新建的庫結(jié)構(gòu)完整的空庫。

(二)非ACCESS數(shù)據(jù)庫的動(dòng)態(tài)調(diào)入

在實(shí)際應(yīng)用的很多情況下,經(jīng)常需要在對(duì)一些事先并不知道其具體庫結(jié)構(gòu)的數(shù)據(jù)庫進(jìn)行調(diào)入、顯示及打印其記錄。因而實(shí)現(xiàn)未知格式數(shù)據(jù)庫的動(dòng)態(tài)調(diào)入也是評(píng)價(jià)VB數(shù)據(jù)庫應(yīng)用程序兼容性的一個(gè)重要標(biāo)志。

在VB中,網(wǎng)格控件非常適合用于瀏覽數(shù)據(jù)庫中的數(shù)據(jù),只需把數(shù)據(jù)放入網(wǎng)格即可。

在使用網(wǎng)格時(shí)動(dòng)態(tài)調(diào)入的關(guān)鍵在于記錄(Colume)內(nèi)容和字段(Row)內(nèi)容(包括字段的名稱、類型、值等)的讀取,因而生成一個(gè)可以對(duì)應(yīng)于一個(gè)或多個(gè)數(shù)據(jù)表中的全部或部分記錄的Dynaset對(duì)象是非常必要的。Dynaset對(duì)象還可以是一個(gè)動(dòng)態(tài)查詢的結(jié)果,能進(jìn)行記錄的增加、刪除和修改等操作。

下面是一段用網(wǎng)格顯示FoxPro數(shù)據(jù)庫的程序。

以下為引用的內(nèi)容:

Sub DBLoad( )
Dim Db1 As database, Ds1 As Dynaset,Td As TableDefs,F(xiàn)ld As Fields
Dim Fname,Tmp,Path ToTalNum As String,I,J,Pos1 As Integer
Dim MyNum ’定義一個(gè)變體型數(shù)據(jù)
CMD1.Filter = "FoxPro數(shù)據(jù)庫文件(*.DBF)|*.DBF|所有文件|*.*"
CMD1.DialogTitle = "調(diào)入Ms FoxPro數(shù)據(jù)庫文件"
CMD1.FilterIndex = 1
CMD1.Action = 1
Fname$ = CMD1.Filename
Pos1% = GetPos( Fname$ )
Path$ = Left$( Fname$, Pos1% )
Tmp$ = Right$( Fname$, Len(Fname$)-Pos1)
Fn$ = Left$( Tmp$, Instr( 1,Tmp$,“.”) - 1 )
Set Db1 = OpenDatabase( Path$, True, False, "FoxPro 2.5;" )
Set Ds1 = Db1.CreateDynaset( Fn$ )
If Ds1.EOF And Ds1.BOF Then '數(shù)據(jù)庫表內(nèi)無記錄則退出
TotalNum = 0
MsgBox "此數(shù)據(jù)表為空表!"
Exit Sub
Else '顯示數(shù)據(jù)庫表內(nèi)的實(shí)際記錄數(shù)
Ds1.MoveLast
TotalNum = Ds1.RecordCount
Grid1.Rows = TotalNum 1 ’置網(wǎng)格的實(shí)際行數(shù)
Total.Caption = Str$(TotalNum)
End If
'置網(wǎng)格的實(shí)際列數(shù)并置每列的寬度
Set Td = Db1.TableDefs
Set Fld = Td( Fn$ ).Fields
Grid1.Cols = Fld.Count 1
Grid1.ColWidth(0) = 600
For I = 1 To Fld.Count
Grid1.ColWidth(I) = 1500
Next I
'在網(wǎng)格的第一行內(nèi)填入字段名
Grid1.Row = 0, Grid1.Col = 0
Grid1.Text = "序號(hào)"
For I = 1 To Fld.Count
Grid1.Col = I
Grid1.Text = Fld(I - 1).Name
Next I
'在網(wǎng)格中填入相應(yīng)的數(shù)據(jù)
Ds1.MoveFirst
I = 1
Do While Not Ds1.EOF
Grid1.RowHeight(I) = 300
Grid1.Row = I
Grid1.Col = 0
Grid1.Text = I
For J = 1 To Fld.Count
Grid1.Col = J
MyNum = Ds1.Fields(J - 1).Value
'對(duì)記錄的數(shù)據(jù)類型進(jìn)行判斷后做相應(yīng)的處理
If IsNumeric( MyNum ) Or IsDate( MyNum ) Then
Grid1.Text = Str$( Ds1.Fields(J - 1).Value )
Else If VarType( MyNum ) = 8 Then
Grid1.Text = Ds1.Fields(J - 1).Value
Else If VarType( MyNum ) = 0 Or VarType( MyNum ) = 1 Then
Grid1.Text = " "
End If
On Error Resume Next
Next J
Ds1.MoveNext
I = I 1
Loop
Ds1.Close
Db1.Close
Exit Sub

最后應(yīng)記住,在VB的數(shù)據(jù)庫應(yīng)用程序運(yùn)行之前,一定要在AUTOEXEC.BAT文件中加入一句SHARE.EXE /L:500。

以上所有程序均在Pentium/166機(jī)、中文Windows95下用VB4調(diào)試通過。

四、結(jié)束語

對(duì)非Access數(shù)據(jù)庫的兼容是VB數(shù)據(jù)庫編程中不可分割的重要部分。因而熟練掌握使用DAO方法對(duì)非ACCESS數(shù)據(jù)庫的編程是極為重要的。并且,一定編程技巧的應(yīng)用也有助于彌補(bǔ)VB對(duì)外來數(shù)據(jù)庫支持的不足。

分享:ACCESS默認(rèn)保存路徑的修改方法
1、Microsoft ACCESS文件默認(rèn)保存路徑修改方法 Access默認(rèn)保存路徑也是C:My Documents目錄。默認(rèn)保存路徑修改方法:打開ACCESS程序,單擊菜單欄“工具”下的“選項(xiàng)”命

來源:模板無憂//所屬分類:Access數(shù)據(jù)庫教程/更新時(shí)間:2008-08-22
相關(guān)Access數(shù)據(jù)庫教程
天天干免费视频| 日韩国产成人无码av毛片| 精品无码在线视频| 成人影院大全| 日韩极品在线观看| 精品视频一区三区九区| 91在线精品播放| 亚洲香蕉中文网| 色豆豆成人网| 国产精品原创巨作av| 欧美xxxx老人做受| 精品一区二区日本| 91精品国自产在线| 欧美日韩黄色| 久久综合九色综合97_久久久| 欧洲精品在线播放| 午夜性福利视频| 无码国产色欲xxxx视频| 青青草成人在线观看| 日韩一区二区三区视频| 久久精品五月婷婷| 永久免费看片直接| 影视先锋久久| 一区二区三区日韩欧美精品| 日本中文字幕不卡免费| 久久久久亚洲av无码专区首jn| 免费观看成人性生生活片| 国产高清成人在线| 在线观看欧美日韩国产| 日韩少妇内射免费播放| 国产麻豆一精品一男同| 日本系列欧美系列| 亚洲第一页自拍| 一区二区三区精品国产| 国产aaa免费视频| 久久精品国产亚洲av麻豆蜜芽| 一本一道久久a久久精品蜜桃| 亚洲电影一区二区三区| 国产成人91久久精品| 无码精品a∨在线观看中文| 国产成人精品电影久久久| 岛国av免费在线| 亚洲三级黄色片| 日本不卡中文字幕| 日韩视频免费观看高清完整版 | 久久99国产乱子伦精品免费| 欧美在线不卡一区| 亚洲一区二区三区成人在线视频精品| 加勒比一区二区| 99ri日韩精品视频| 国产精品久久777777| 26uuu国产精品视频| 精品国产乱码久久久久久1区二区| 五月天婷婷在线观看| 国产在线精品免费av| 精品调教chinesegay| 亚洲激情免费视频| 中文字幕黄色av| 香蕉久久夜色精品国产| 制服丝袜国产精品| 亚洲精品电影在线一区| 五月天综合激情| 欧美国产91| 欧美吻胸吃奶大尺度电影| 久久伦理网站| 久草成人在线视频| 欧美+亚洲+精品+三区| 欧美亚洲综合另类| 欧美久久久久久久| 男人的天堂一区| 国产综合精品| 91麻豆精品国产91久久久使用方法| 欧美影视一区二区| 国产毛片aaa| 亚洲激情黄色| 欧美成人国产一区二区| 日本一二三区视频在线| 亚洲综合图片区| 久久精品视频一| 91插插插插插插插插| 日本综合字幕| 久久天堂av综合合色蜜桃网| 韩国日本不卡在线| 91视频在线免费| 在线视频亚洲欧美中文| 亚洲色欲色欲www| 国产区精品视频| 美女av免费看| 91中文字幕精品永久在线| 在线欧美小视频| 日韩欧美亚洲区| 免费视频网站在线观看入口| 视频一区二区三区在线| 在线播放精品一区二区三区| 国产免费又粗又猛又爽| 不卡一区视频| 亚洲在线一区二区三区| 国产日产欧美精品| 舐め犯し波多野结衣在线观看| 日韩欧美中字| 91精品国模一区二区三区| 女女同性女同一区二区三区按摩| aaa国产视频| 成人18精品视频| 国产精品都在这里| 在线免费看av网站| 欧美日本一区二区视频在线观看| 精品国产制服丝袜高跟| 欧美亚洲另类色图| 日韩成人在线一区| 国产欧美1区2区3区| 国产在线精品一区免费香蕉| 免费一级全黄少妇性色生活片| 亚洲国产精品一区制服丝袜| 亚洲精品有码在线| 久久久精品高清| 粉嫩久久久久久久极品| 欧美性极品少妇精品网站| 亚洲成色最大综合在线| a天堂在线观看视频| 99国产精品99久久久久久| 国产精品久久久久久久久免费 | 一区在线观看| 亚洲精品小视频| av亚洲天堂网| 日韩成人av在线资源| 在线免费观看视频一区| 欧美日韩中文字幕在线播放| 成人精品在线播放| 国产精品网站一区| 国产一区在线免费| 在线观看中文字幕2021| 久久99精品国产91久久来源| 久久这里有精品| 香蕉视频在线观看黄| 亚洲美女15p| 欧美一区二区日韩| 日本黄色三级大片| 日韩三级不卡| 色天使色偷偷av一区二区| 国产视频一视频二| 成人综合日日夜夜| 日本高清成人免费播放| 久久综合久久网| 99精品美女视频在线观看热舞| 欧美日韩午夜视频在线观看| 女同性恋一区二区| 亚洲精品一区三区三区在线观看| 亚洲一区二区3| 三年中文高清在线观看第6集| 无码精品黑人一区二区三区| 亚洲色图欧美激情| 色一情一区二区三区四区| 欧美电影免费观看网站| 亚洲欧洲制服丝袜| 麻豆一区区三区四区产品精品蜜桃| 精品国产无码一区二区| 综合色中文字幕| 干日本少妇视频| 国产精品视频首页| 91麻豆精品国产自产在线观看一区 | avtt天堂在线| 日韩精品一二三| 久久久久久久激情视频| 日本a级片视频| 国产精品一区免费在线观看| 国产精品爽爽爽| 小泽玛利亚一区二区三区视频| 久久视频一区二区| 精品日产一区2区三区黄免费| www.av在线.com| 一区二区三区国产精品| 特级西西444| 香蕉大人久久国产成人av| 日韩欧美国产系列| 韩国三级与黑人| 午夜激情久久| 久久视频在线视频| 婷婷激情四射网| 国产麻豆精品在线| 91视频婷婷| 亚洲爆乳无码一区二区三区| 亚洲一二三区不卡| 免费看毛片的网址| 欧美18免费视频| 日韩精品在线看| 一区二区三区四区免费| 99亚洲视频| 青草成人免费视频| 久久亚洲精品石原莉奈| 亚洲国产电影在线观看| 亚洲国产一区二区三区在线播| 电影一区二区| 欧美精品xxxxbbbb| 91免费视频污| 亚洲精选成人| 日韩**中文字幕毛片| 国模私拍一区二区| 亚洲精品乱码久久久久久黑人| 成人免费a级片| 盗摄系列偷拍视频精品tp| 亚洲成在人线av| 扒开jk护士狂揉免费| 美女视频黄a大片欧美| 成人午夜在线视频一区| 成人午夜精品福利免费| 欧美性xxxxx极品| 天天插天天操天天射| 2023国产精品久久久精品双| 欧美黄色片免费观看| 国产成人精品777777| 日韩一区在线看| 少妇人妻无码专区视频| 日韩免费特黄一二三区| 最新亚洲国产精品| 日本一区二区网站| 欧美国产日韩亚洲一区| 91网站在线观看免费| 亚洲69av| 久久天天躁夜夜躁狠狠躁2022| 不卡的免费av| 国产精品久久久久久户外露出| 中文字幕の友人北条麻妃| 国产成人精品999在线观看| www.日韩.com| 日韩欧美三级在线观看| 中文字幕一区免费在线观看 | 无码专区aaaaaa免费视频| 四虎成人免费视频| 色wwwwww| 精品视频一区二区不卡| 久久久精品人妻一区二区三区| 国产欧美一区二区三区国产幕精品| 日韩美女在线播放| 国产毛片一区二区三区va在线| 日韩一区二区三区高清在线观看| 51精品秘密在线观看| 成人在线视频免费播放| 精品一区二区三区在线播放| 久久艹中文字幕| 视频精品二区| 日韩在线中文字幕| 三级黄色在线视频| 亚洲男同性恋视频| 18成人在线视频| 久久av一区二区三区| 日本精品视频在线| 国产suv一区二区| 欧美影视一区二区三区| 污污内射在线观看一区二区少妇| 久久黄色级2电影| 欧美性生交片4| 欧美成人精品一区二区综合免费| 美腿丝袜一区二区三区| 免费久久99精品国产自| www国产精品| 欧美成人免费视频| 中文字幕一区2区3区| 亚洲国产精品自拍| 91插插插影院| 久久国内精品自在自线400部| 欧美一区二区三区四区五区六区 | 亚洲高清在线视频| 欧美成人黑人猛交| 亚洲一区二区毛片| 国产伦一区二区三区| 欧美电影在线免费观看| 精品人伦一区二区三电影 | 国产精品一色哟哟哟| 亚洲国产一区在线| japanese国产精品| 日韩女优在线播放| 欧美xxx网站| 亚洲色图13p| 中文字幕免费观看| 91福利小视频| 久久久久麻豆v国产精华液好用吗| 国产在线观看一区二区| 只有这里有精品| 欧美在线色图| 国产欧美日韩丝袜精品一区| 日本一区二区三区中文字幕| 久久国产精品久久久久久久久久| 日韩精品在线一区二区三区| 精品久久久视频| 精品人妻一区二区三区日产乱码卜| 99re这里都是精品| 狠狠爱免费视频| 日韩av网站免费在线| 少妇免费毛片久久久久久久久| 成人在线亚洲| 色婷婷综合激情| 成人欧美精品一区二区| 国产成人免费高清| 精品少妇人欧美激情在线观看| 亚洲视频一区| 久久国产精品精品国产色婷婷| 午夜精品福利影院| 国产v综合ⅴ日韩v欧美大片| 精品成人av| 欧美aaaaa成人免费观看视频| 91精品国产综合久久香蕉922 | 欧美亚洲国产一区二区三区va| 免费观看av网站| 国产精品久久久久久久久快鸭| 天天做天天干天天操| 成人丝袜视频网| 成人在线观看黄| 黑人巨大精品欧美黑白配亚洲| www.亚洲成人网| 天堂av在线一区| 宅男一区二区三区| 亚洲免费观看| 亚洲国产精品一区二区第一页| 久久亚洲国产| 91最新在线免费观看| 狂野欧美xxxx韩国少妇| 欧美一性一乱一交一视频| 久久久国产精品网站| 欧美极品欧美精品欧美视频| 国产精品极品美女在线观看| 久久精品中文字幕电影| 亚洲欧美日韩动漫| 日韩中文在线观看| 天天干天天爽天天操| 久久精品人人爽| www.久久综合| 国产亚洲免费的视频看| 亚洲成人久久精品| 尤物yw午夜国产精品视频明星| 好吊视频一二三区| 色偷偷噜噜噜亚洲男人| 午夜福利视频一区二区| 中文日韩在线视频| 国产 欧美 自拍| 久热99视频在线观看| 高清成人在线| 91精品国产沙发| 视频欧美一区| 国产在线精品成人一区二区三区| 欧美尿孔扩张虐视频| 亚洲一区二区免费在线| 美女少妇全过程你懂的久久| 韩国精品一区二区三区六区色诱| 99久久婷婷国产综合精品电影√| 久久99精品久久久水蜜桃| 91精品一区二区三区综合| 日韩区国产区| 久久最新视频| 久久久久久久中文| 波多野结衣中文字幕一区| 日本在线观看视频一区| 91在线观看地址| 变态另类丨国产精品| 精品国产31久久久久久| 免费在线观看h片| 欧美日本高清视频在线观看| 高潮毛片又色又爽免费| 亚洲久久久久久久久久久| 色网站免费观看| 久久久久久久一区二区| 日韩在线网址| 国产精品久久久久久婷婷天堂| 成久久久网站| 日本不卡二区高清三区| 久久久蜜桃一区二区人| 成人免费在线小视频| 久久综合色天天久久综合图片| 视频免费在线观看| 亚洲成av人片一区二区三区| 日本免费在线播放| 337p日本欧洲亚洲大胆精品 | 69久久夜色精品国产69蝌蚪网| 日本精品入口免费视频| 夜夜嗨av色综合久久久综合网| 色天使综合视频| 国产精品视频最多的网站| 超碰成人久久| 特级毛片在线免费观看| 国产一区美女在线| 特级黄色片视频| 国产精品私人影院| 永久免费av无码网站性色av| 欧美熟乱第一页| 97精品人妻一区二区三区在线| 久久精品国产欧美激情| 国产亚洲观看| 99在线影院| 亚洲人成久久| 国产精品亚洲a| 久久久99久久精品欧美| 成年人二级毛片| 欧美刺激午夜性久久久久久久| 丰满熟妇人妻中文字幕| 欧美专区在线视频| 日本一本不卡| 久久久无码中文字幕久...| 成人精品一区二区三区四区| 好吊操视频这里只有精品| 亚洲福利视频一区二区|