欧美三区四区_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ù)庫教程
天天摸夜夜添狠狠添婷婷| 在线黄色免费观看| wwwwww国产| 成人女性视频| 亚洲欧美一区二区三区极速播放 | 精品国产欧美日韩| 自拍av一区二区三区| 久久久久久久久网站| 色综合av综合无码综合网站| 中文字幕乱码人妻二区三区| 国精品一区二区| 欧美中文字幕不卡| wwwxx欧美| 亚洲天堂最新地址| 国产精品极品国产中出| 日本一区二区视频在线观看| 欧美另类交人妖| 日韩免费毛片视频| 国产手机视频在线| 日韩精品电影在线观看| 亚洲精品一区在线观看| 亚洲精品第一区二区三区| 国产亚洲自拍av| 日韩成人激情| 欧美午夜xxx| 成人区精品一区二区| 欧美黄色一级生活片| 国产精品视频3p| 亚洲欧美日韩一区二区三区在线观看| 欧洲一区二区视频| 黄色av电影网站| 欧美a在线观看| 国产精品色婷婷| 青青草成人在线| 女同性αv亚洲女同志| 午夜不卡一区| 亚洲国产精品成人综合| 欧美一级大片视频| 国产女人18毛片水真多18| 国产精品欧美一区二区三区不卡| 国产欧美一区二区三区鸳鸯浴| 国内精品伊人久久| 韩国一区二区三区四区| 国色天香久久精品国产一区| 亚洲国产成人午夜在线一区| 日韩av免费在线| 亚洲精品乱码久久久久久久| 国产福利一区二区精品秒拍| 亚洲色图视频网| 成人动漫网站在线观看| 69xxx免费| 成人在线免费观看网站| 欧美中文字幕一区二区三区亚洲| 欧美中日韩一区二区三区| 国产成人无码精品久久久久| 亚洲茄子视频| 亚洲国产精品va在线看黑人动漫| 人人干视频在线| 免费看国产片在线观看| av一本久道久久综合久久鬼色| 欧美激情视频在线| 国产 xxxx| 网曝91综合精品门事件在线| 日韩欧美有码在线| 日本精品一区二区| 中文字幕第31页| 国产自产v一区二区三区c| 久久久999精品| 无码国产精品一区二区高潮| 综合视频一区| 精品久久中文字幕久久av| 久久久久高清| 中文精品久久久久人妻不卡| 日本不卡一区二区| 久久精品国产精品亚洲| 精品无码av一区二区三区不卡| 99久久婷婷国产综合精品青牛牛| 亚洲电影在线播放| 久久伦理网站| 中文字幕1区2区3区| 国产在线精品免费| 久久久在线视频| 无码国产69精品久久久久同性| 成人一级毛片| 日韩欧美中文一区二区| 黄色一级片播放| 小明成人免费视频一区| 亚洲欧美国产三级| 国内视频一区二区| 亚洲视屏在线观看| 高清在线观看日韩| 国产aⅴ夜夜欢一区二区三区| 欧美成人午夜精品免费| 婷婷久久国产对白刺激五月99| 日韩免费视频线观看| 国产美女网站在线观看| 福利精品在线| 亚洲国产综合91精品麻豆| 日韩成人av电影在线| 99视频国产精品免费观看a| 99久久国产综合色|国产精品| 国产精品白嫩美女在线观看| 性色av无码久久一区二区三区| 亚洲日本免费| 久久精品91久久香蕉加勒比| 中文字幕精品视频在线| 99成人在线视频| 国产精品一区二区a| 91免费版网站入口| 欧美国产精品一二三| 亚洲视频播放| 俺去了亚洲欧美日韩| 色哟哟视频在线| 成人在线免费观看网站| 亚洲第一区中文字幕| 天天影视综合色| 丁香五月缴情综合网| 欧美日韩在线播放三区| 精品无码一区二区三区在线| 在线免费观看亚洲| 色激情天天射综合网| 国产av熟女一区二区三区| 国产精品原创视频| 欧美天天综合色影久久精品| 激情成人开心网| 另类一区二区| 91黄视频在线| 日韩av一二三四区| swag国产精品一区二区| 在线成人av影院| 不卡av免费在线| 日本欧美三级| 亚洲国产精品电影在线观看| 韩国三级丰满少妇高潮| 成人写真视频| 亚洲人成网站999久久久综合| 国产xxxx视频| 韩日精品视频| 欧美国产高跟鞋裸体秀xxxhd| 永久免费未视频| 久久国产成人午夜av影院| 欧洲精品久久久| 在线能看的av| 97精品久久久午夜一区二区三区| 99在线视频首页| 99热这里是精品| 亚洲免费av观看| 久久av喷吹av高潮av| 四虎国产精品免费久久5151| 在线看一区二区| 黄色片在线免费| 成人女性视频| 日韩一区二区精品视频| jizzjizz日本少妇| 久久电影网站中文字幕| 国产精品视频区| 欧美一级做a爰片免费视频| 国产欧美视频一区二区| 少妇特黄a一区二区三区| 国产精品字幕| 欧美日韩精品欧美日韩精品 | 亚洲精品社区| 2019国产精品自在线拍国产不卡| 久草视频免费播放| 99免费精品在线| 欧美日韩免费高清| 成人性片免费| 欧美一区二区三区人| 伦伦影院午夜理论片| 欧美亚洲不卡| 91高潮在线观看| 亚洲av无码乱码国产精品fc2| 国产精品盗摄一区二区三区| 中国一级黄色录像| 国产亚洲精品美女久久| 精品无码久久久久久国产| 国产一二三四五区| 久久精品国产99久久6| 亚洲一区亚洲二区| 欧美一区二区黄片| 欧美在线免费播放| 日本一区二区三区在线免费观看| 亚洲午夜91| 国产99视频精品免视看7| 国产一区二区网站| 天天综合天天综合色| 婷婷激情四射五月天| 午夜国产一区| 91精品国产高清| 中文字幕+乱码+中文| 亚洲国产综合在线| 在线看的黄色网址| 极品少妇一区二区三区| 国产成人亚洲综合| 精品国产黄色片| 一道本成人在线| 激情文学亚洲色图| 亚洲欧美bt| 成人综合网网址| 亚洲午夜天堂| 欧美一级xxx| 国产 欧美 在线| 国产高清精品网站| 午夜精品美女久久久久av福利| 日韩中文字幕在线一区| 亚洲欧美变态国产另类| 欧美又粗又大又长| 国产欧美精品一区二区色综合朱莉| 日韩视频一二三| 成人3d动漫在线观看| 国产69精品久久久| 一区二区日韩视频| 欧美综合久久久| 呦呦视频在线观看| 国产又黄又大久久| 日韩高清国产精品| 久久男人av| 欧美成人免费全部| 中国一区二区视频| 色综合色狠狠综合色| aaa黄色大片| 国产一区福利在线| 日韩欧美亚洲区| 欧美日韩一区二区三区在线电影| 久久伊人精品天天| 一区二区三区在线免费观看视频| 天天影视色香欲综合网老头| 亚洲妇女无套内射精| 精品一区二区在线免费观看| 日本午夜精品一区二区三区| 偷拍亚洲色图| 91国产精品视频在线| 亚洲高清精品视频| 日韩三级在线免费观看| 免费成人深夜夜行网站| 国产精品伦理在线| 中文字幕第88页| 免费人成在线不卡| 欧美三级华人主播| 国产精品嫩模av在线| 欧美有码在线观看| 伊人久久av| 亚洲欧美日韩久久久久久| 91av在线免费视频| 欧美日韩激情美女| 国产精品无码永久免费不卡| 成人爱爱电影网址| 妞干网在线观看视频| 一区在线视频观看| 国产在线欧美日韩| 日韩一级电影| 国产成人精品av| 国产精品久久久久77777丨| 伊人av综合网| 一级黄色录像大片| 欧美一区二区三区爱爱| 激情五月婷婷在线| 亚洲国产视频在线| 插我舔内射18免费视频| 久久品道一品道久久精品| 久久久999视频| 久久精品国产清高在天天线| 日本在线视频一区| 97精品一区| 亚洲字幕一区二区| 成人爽a毛片| 欧美孕妇性xx| 欧美高清影院| 欧美精品一区在线播放| 欧洲成人一区二区三区| 国产丝袜一区二区三区| www.五月婷婷.com| 91麻豆精品国产自产在线| avove在线播放| 黑人精品xxx一区一二区| 中文字幕丰满孑伦无码专区| 国产精品丝袜久久久久久app| 九九九久久久久久久| www.日韩大片| 高清一区二区视频| 国产风韵犹存在线视精品| 人人妻人人澡人人爽欧美一区双 | 日韩欧美亚洲区| 伊人色**天天综合婷婷| 国产一区二区高清视频| 青青草97国产精品麻豆| 福利视频一区二区三区| 激情五月综合| 国产精品yjizz| 精品一级毛片| 高清不卡日本v二区在线| 精品一区在线| 91福利视频导航| 精品大片一区二区| 国产精品国产一区二区 | 欧美日韩在线一区二区| 黄色一级视频免费| 欧洲亚洲国产日韩| 久久9999久久免费精品国产| 欧美在线免费播放| 日本少妇久久久| 91麻豆精品国产91久久久使用方法| 国产91av视频| 337p亚洲精品色噜噜狠狠| 成年人免费高清视频| 91精品国产aⅴ一区二区| 欧美精品韩国精品| 精品噜噜噜噜久久久久久久久试看| 欧美日韩综合一区二区三区| 精品久久人人做人人爽| 伊人网中文字幕| 日韩经典中文字幕| 国产人妻精品一区二区三| 国产亚洲精品美女| 人妻视频一区二区三区| 久久亚洲国产精品成人av秋霞| 亚洲女色av| 国内伊人久久久久久网站视频| 成人在线视频www| 国产精品日韩一区| 天堂一区二区三区四区| 成人激情av| 亚洲国产精品久久久久蝴蝶传媒| 欧美在线视频二区| 欧美一级专区| 国产av天堂无码一区二区三区| 国产精品 日产精品 欧美精品| 日本va中文字幕| 久久精品视频一区| 麻豆国产精品一区| 亚洲成人av福利| 久久精品亚洲无码| 欧美成人激情免费网| 99久久国产免费| 久久天天躁日日躁| 电影中文字幕一区二区| 国产精品视频地址| 日韩欧美一区二区三区免费看| 欧美日韩国产综合视频在线| 国产伦理一区| 亚洲熟女乱色一区二区三区| 99久久99久久精品免费观看| 97精品人妻一区二区三区蜜桃| 亚洲综合男人的天堂| 免费中文字幕在线观看| 日韩天堂在线观看| 精品人妻无码一区二区| 欧美成人免费全部| 97久久综合区小说区图片区| 99re在线播放| 国语自产精品视频在线看8查询8| 久操手机在线视频| a美女胸又www黄视频久久| 99久久免费看精品国产一区| 午夜精品免费在线| 国产成人无码精品久在线观看| 日韩黄色高清视频| 成人激情综合| 国产精品影片在线观看| 亚洲蜜桃视频| 久久精品xxx| www一区二区| 美女100%露胸无遮挡| 69av一区二区三区| 精品国产九九九| 91成人在线播放| 不卡在线一区| 青草全福视在线| 91丨porny丨中文| 小早川怜子久久精品中文字幕| 91福利精品第一导航| 一区二区三区www污污污网站| 欧美成人全部免费| 国产精品x8x8一区二区| 欧美精品一区二区三区久久| 免费成人美女在线观看| 国产精品igao网网址不卡| 亚洲18女电影在线观看| 中文字幕精品视频在线观看| 精品国产欧美成人夜夜嗨| swag国产精品一区二区| 欧美在线视频一区二区三区| 精品制服美女久久| 日本美女视频网站| 在线精品视频小说1| 国产伦精品一区二区三区四区 | 一区二区三区国产精华| 分分操这里只有精品| 国产农村妇女毛片精品久久麻豆| 男人与禽猛交狂配| 亚洲欧美日韩中文在线| 日韩中文字幕在线一区| 欧美精品尤物在线| 国产麻豆精品在线| 欧美成人午夜精品免费| 日韩欧美国产成人一区二区| 成人做爰视频www网站小优视频| 91免费在线视频网站| 天堂久久一区二区三区| 日韩av成人网|