亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Access > 正文

在VB中兼容非ACCESS數據庫的技巧

2024-09-07 19:03:31
字體:
來源:轉載
供稿:網友

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

關鍵詞:VB、非ACCESS數據庫、數據存取對象

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

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

一、VB數據庫的體系結構

VB數據庫的核心結構是所謂的MicroSoft JET數據庫引擎,它為VB與數據庫的接口提供了基本的方法和手段。JET引擎被Visual Basic、Microsoft ACCESS和其它Microsoft產品所共享。因而在VB中Access數據庫格式是一種標準的內置格式,所有的非ACCESS數據庫都被稱為外來數據庫。

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

二、使用非ACCESS數據庫時的參數設置及配置文件的參數讀取

值得注意的是,大多數的程序員都不注重數據庫配置文件的使用,殊不知這是極為重要的。

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

SetDataACCESSOptions語句的用法如下:

SetDataACCESSOptions 1,IniFileName

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

值得注意的是,當應用程序找不到這個INI文件時,或在調用OpenDataBase函數時對其Connect參數值沒有設定為VB規(guī)定的標準值,如對FoxPro 2.5格式設定為了“FoxPro;”(應為“FoxPro 2.5;”),或者沒有安裝相應的ISAM驅動程序,則此時VB會顯示一條錯誤信息“Not Found Installable ISAM”。

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

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

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

以下為引用的內容:
Funtion GetINIString$( Byval Fname$,Byval szItem$,Byval szDeFault$ )
’此自定義子函數實現INI文件內設置段內參數的讀取
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

通過此函數就能實現對各種數據庫格式的讀取。

三、調用數據存取對象對非ACCESS數據庫編程的方法及其實例

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

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

在VB中從一種數據庫類型轉化為另一種數據庫類型幾乎不需要或只需要很少的代碼修改。而且,盡管dBASE、Paradox本身的DDL(Data Definition Language,即數據定義語言)和DML(Data Manipulation Language,即數據操縱語言)是非結構化查詢的,但它們仍然可以使用VB的SQL語句和JET引擎來操縱。

因而對FoxPro等非ACCESS數據庫而言,調用數據庫存取對象的方法同樣也是一種最佳的選擇。

(一)非ACCESS數據庫的新建及庫結構的修改

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

一旦數據庫對象建立后,就可以用它對數據庫的結構進行修改和數據處理。

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

下面是新建一個FoxPro 2.5格式數據庫的程序實例。

以下為引用的內容:

Sub CreateNew ( )
Dim Db1 As database, Td As TableDefs
Dim T1 As New Tabledef,F1 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( "請輸入新路徑名:", "輸入對話框" )
MkDir Path$ ’新建一個子目錄
Set Db1 = OpenDatabase(Path$, True, False, "FoxPro 2.5;")
Set Td = Db1.TableDefs
T1.Name = "MyDB" ’新建一個數據表,數據表名為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 ’向數據表中添加這些字段
T1.Fields.Append F2
T1.Fields.Append F3
Ix1.Name = "Name" ,Ix1.Fields = "Name", Ix1.Primary = True ’新建索引
T1.Indexes.Append Ix1 ’向數據庫的Indexes集合中添加新的索引
Td.Append T1 ’向TableDefs集合中添加新表
Db1.Close ’必須先關閉數據庫對象再退出
End Sub

在此段程序中值得注意的是,對非Access數據庫的新建不用CreateDatabase函數,而是用OpenDatabase函數,這點與Access數據庫大不一樣,但也僅僅是針對非ACCESS數據庫而言才能用OpenDatabase函數來新建一個數據庫對象。

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

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

通過一定的編程技巧還可以實現非ACCESS數據庫的庫結構的拷貝,下面是一段相應的程序。

Function GetPos( TFname$ ) ’此自定義函數完成對帶路徑文件名中最后一個“/”符號的定位

以下為引用的內容:

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 ’找到最后一個“/”符號的位置,并記下來
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數據庫文件(*.DBF)|*.DBF|所有文件|*.*" ’CMD1為一個對話框的控制名
CMD1.DialogTitle = "調入Ms FoxPro數據庫文件"
CMD1.FilterIndex = 1
CMD1.Action = 1
DestF$ = InputBox$( "請輸入目標文件名:", "輸入對話框" )
If CMD1.FileName = “ ”Or DestF$ = " " Then
MsgBox "源文件或目標文件名為空"
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 ) ’獲得新文件的數據庫名
’Fn$為實際的Foxpro數據庫名,也即CreateDynaset函數內的source屬性值
Set Db1 = OpenDatabase( Path$, True, False, "FoxPro 2.5;" )
Set Ds1 = Db1.CreateDynaset( Fn$ )
If Ds1.EOF And Ds1.BOF Then ’數據庫內的無記錄則退出
TotalNum% = 0
MsgBox "此數據表為空表!"
Exit Sub
End If
’刪除記錄,保留庫結構
Ds1.MoveFirst
Do
Ds1.Delete
Ds1.MoveNext
Loop Until Ds1.EOF
End Sub

可見,拷貝庫結構的方法在于把一個已存在的數據庫拷貝到一個新文件中,然后再刪除新文件內的所有記錄,保留其庫結構,得到的就是一個新建的庫結構完整的空庫。

(二)非ACCESS數據庫的動態(tài)調入

在實際應用的很多情況下,經常需要在對一些事先并不知道其具體庫結構的數據庫進行調入、顯示及打印其記錄。因而實現未知格式數據庫的動態(tài)調入也是評價VB數據庫應用程序兼容性的一個重要標志。

在VB中,網格控件非常適合用于瀏覽數據庫中的數據,只需把數據放入網格即可。

在使用網格時動態(tài)調入的關鍵在于記錄(Colume)內容和字段(Row)內容(包括字段的名稱、類型、值等)的讀取,因而生成一個可以對應于一個或多個數據表中的全部或部分記錄的Dynaset對象是非常必要的。Dynaset對象還可以是一個動態(tài)查詢的結果,能進行記錄的增加、刪除和修改等操作。

下面是一段用網格顯示FoxPro數據庫的程序。

以下為引用的內容:

Sub DBLoad( )
Dim Db1 As database, Ds1 As Dynaset,Td As TableDefs,Fld As Fields
Dim Fname,Tmp,Path ToTalNum As String,I,J,Pos1 As Integer
Dim MyNum ’定義一個變體型數據
CMD1.Filter = "FoxPro數據庫文件(*.DBF)|*.DBF|所有文件|*.*"
CMD1.DialogTitle = "調入Ms FoxPro數據庫文件"
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 '數據庫表內無記錄則退出
TotalNum = 0
MsgBox "此數據表為空表!"
Exit Sub
Else '顯示數據庫表內的實際記錄數
Ds1.MoveLast
TotalNum = Ds1.RecordCount
Grid1.Rows = TotalNum 1 ’置網格的實際行數
Total.Caption = Str$(TotalNum)
End If
'置網格的實際列數并置每列的寬度
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
'在網格的第一行內填入字段名
Grid1.Row = 0, Grid1.Col = 0
Grid1.Text = "序號"
For I = 1 To Fld.Count
Grid1.Col = I
Grid1.Text = Fld(I - 1).Name
Next I
'在網格中填入相應的數據
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
'對記錄的數據類型進行判斷后做相應的處理
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

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

以上所有程序均在Pentium/166機、中文Windows95下用VB4調試通過。

四、結束語

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
91成人超碰| 天堂在线观看av| 欧美成人在线影院| av中文天堂在线| 欧美一区二区视频网站| 日日干天天草| 国产在线观看a视频| 韩国免费在线视频| 久久蜜臀精品av| 香蕉在线播放| 国产亚洲精品美女久久久m| 又黄又湿又爽又免费又色| 99在线看视频| 91久久黄色| 激情小说激情视频| 久久久国产精华| 欧美视频精品一区| 男女做暖暖视频| 欧美酷刑日本凌虐凌虐| 久久精品免视看国产成人| 亚洲日本韩国在线| 亚洲国产精品一区| 免费成人美女在线观看| 先锋影音av321| 国产麻豆综合视频在线观看| 国产精彩视频在线观看| 九色91popny| 91福利在线免费观看| 欧美极度另类videos高清| 国产成人在线视频| 尤物网站在线| 欧美老人xxxx18| 黄色片免费观看视频| 国产丝袜精品第一页| 懂色av影视一区二区三区| 无码国产精品一区二区免费16| 色悠悠久久久久| 国产三级精品三级在线| 在线观看欧美亚洲| 全彩无遮挡全彩口工漫画h#| 欧美在线看片| 亚洲社区在线观看| 亚洲国产欧美国产综合一区| 国产精品午夜在线观看| 性欧美18一19性猛交| 一本大道综合伊人精品热热| 在线日韩一区| 久久久久久久综合| 神马影院午夜我不卡影院| 亚洲每日在线| 欧美韩国理论所午夜片917电影| 五月天久久综合网| 黄色工厂这里只有精品| 神马午夜精品95| 男人天堂网在线| 97超碰在线资源| 成人午夜激情免费视频| 免费在线看黄网址| 色播一区二区| 日日橹狠狠爱欧美超碰| 国产精品理论在线| 九九九在线视频| 国产精品电影观看| 欧美亚洲人成在线| 免费观看四虎精品成人| 日韩av片在线看| 777久久久精品| 精品无人区卡一卡二卡三乱码免费卡| 亚洲一区二区三区免费看| 日韩在线观看视频一区| 国产福利91精品一区二区| 最新中文字幕在线观看| 亚洲精品国产精品国自产在线| 欧美日韩国产免费观看视频| 天天影视网天天综合色在线播放| 欧美成人午夜77777| 国产成人精品av| 中文字幕一区二区三区人妻电影| 黑人巨大亚洲一区二区久| 懂色av中文一区二区三区| 国产精品毛片无遮挡高清| 蜜桃视频在线入口www| 欧美一级久久久久久久大片| 国产又大又黑又粗| 国产精品美女xx| 国产免费一区视频观看免费| 亚洲av色香蕉一区二区三区| 日本不卡视频一区二区| 日韩欧美中文字幕视频| 在线观看国产麻豆| 国产成人亚洲欧美| 亚洲老妇色熟女老太| 天堂网.www在线资源| 国产深夜视频在线观看| 欧美与欧洲交xxxx免费观看| 色婷婷中文字幕| 久久国产精品一区二区三区四区| 久久在线中文字幕| 狠狠色丁香婷婷综合久久片| 欧美精品日韩三级| 日本高清视频在线| 久久久久亚洲av无码专区| 久久精品人人爽| 国产福利一区二区三区视频在线| av在线播放成人| 欧美一区二区三区免费观看| aaa一区二区三区| 久久福利一区| 国产羞羞视频在线观看| 国产精品免费视频一区二区| bdsmchinese医疗折磨| 成年人视频大全| www.91av...| 亚洲少妇30p| 亚洲精品水蜜桃| 日韩精品在线免费看| 97超碰在线资源站| 日本一区二区三区网站| 欧美色视频一区二区三区在线观看| jk破处视频在线| 国产视频丨精品|在线观看| 成人网18免费网站| 国产激情综合五月久久| 午夜精品福利一区二区蜜股av| 成人在线观看你懂的| 中文字幕乱在线伦视频中文字幕乱码在线| 色综合久久88色综合天天| 精品久久久久久亚洲综合网| 亚洲精品国产精品国自| 欧美日韩在线不卡一区| 99精彩视频在线观看免费| 超碰在线亚洲| 日韩特级黄色片| 色婷婷综合中文久久一本| 一区二区三区免费| 福利网址在线观看| 亚洲人成电影院在线观看| 真实国产乱子伦对白在线| 日本精品一区二区三区高清| 亚洲免费影院| 一道本无吗一区| 亚洲第一色av| 放荡的美妇在线播放| 影音先锋国产资源站| 2020欧美日韩在线视频| 蜜桃久久精品一区二区| 久久久久久久久免费视频| 久久久久无码国产精品一区李宗瑞| 91精品国产91久久久久久最新毛片| 免费观看黄网站| 精彩视频一区二区| 日韩av电影中文字幕| 性金发美女69hd大尺寸| 2001个疯子在线观看| 韩国一区二区在线观看| 亚洲日本一区二区三区在线| 国产有码在线一区二区视频| 国产成人精品男人的天堂538| 欧美人伦禁忌dvd放荡欲情| 欧美日韩黄色一区二区| 亚洲另类一区二区| 亚洲国产高清高潮精品美女| 精品中文字幕不卡在线视频| 亚洲乱码国产乱码精品精可以看| 亚洲bt欧美bt日本bt| 欧美激情不卡| 久久久久国产精品区片区无码| 欧美激情极品视频| 成人在线视频一区二区| 一个人看的免费视频色| 亚洲人精品午夜| www.免费黄色| av亚洲男人天堂| 色欧美激情视频在线| 精品国产欧美日韩不卡在线观看| 精品人妻一区二区免费视频| 九草视频在线观看| 波多野结衣在线播放| 国产一区欧美二区| 欧美日韩午夜剧场| 欧美视频二区| 视频免费观看| av在线电影免费观看| 国产精品自拍小视频| www.av在线播放| 国产91丝袜在线播放九色| 超碰一区二区| 久久手机免费视频| 秋霞国产午夜精品免费视频| 妞干网在线播放| 91久久国产综合久久| 99热这里是精品| 精品一区二区三区的国产在线观看| 免费在线观看一区二区| 国产三级生活片| 欧美激情中文字幕乱码免费| 538在线视频| 26uuu精品一区二区三区四区在线| 韩国三级大全久久网站| 国产白丝袜美女久久久久| 久久精品中文字幕电影| 国产91对白刺激露脸在线观看| 麻豆久久久久| 国产一区二区高清视频| 最新日韩一区| 亚洲美女福利视频网站| 中出嫩模无套| 亚洲影视在线观看| 成人a在线观看高清电影| 精品视频一区二区三区四区五区| 97色婷婷成人综合在线观看| 欧美日韩加勒比精品一区| 亚洲成人久久电影| 成人国产精品免费网站| 亚洲一区二区三区影院| 日韩高清欧美高清| 欧美三级中文字幕| 中文人妻一区二区三区| 成人精品一区二区三区校园激情| 四虎影视一区二区| 555www成人网| 在线视频亚洲自拍| 日韩精品在线观看免费| 国产日韩精品在线观看| 污视频在线看网站| 欧美一级二级三级区| 最新中文字幕在线观看视频| 美国黄色小视频| 少妇精品久久久一区二区| 亚洲激情电影在线| 日韩欧美亚洲一区二区三区| 欧美综合国产| jlzzjlzz欧美| 成人va天堂| 日日干日日操| 成人黄色短视频| 82av视频| 黑丝一区二区三区| 日本中文在线| 美臀av在线| 91精品一区国产高清在线gif| 亚洲一区二区在| 成人午夜视屏| 777丰满影院| 日韩一级精品| 精品综合久久久久| www婷婷av久久久影片| 久久国产精品免费| 99视频一区| 好看的中文字幕在线播放| 男男成人高潮片免费网站| 成人av网址在线观看| 亚洲国产精品嫩草影院久久| 国产在线黄色片| 日韩经典中文字幕在线观看| 免费人成在线观看| 天堂中文在线8| 欧美一区二区三区综合| 美国三级日本三级久久99| 青青草视频播放| 最好看的2019的中文字幕视频| 一区二区三区黄色| 国产黑丝在线一区二区三区| 波多野结衣视频在线观看| 亚洲视频免费在线| 国产一级粉嫩xxxx| 精品精品99| 色呦呦日韩精品| 五月天婷婷综合| 人妻内射一区二区在线视频| 精品美女国产在线| 四虎884aa成人精品最新| 亚洲精品视频91| 黄动漫视频高清在线| 成人国产一区二区三区精品麻豆| 红桃成人av在线播放| 在线欧美不卡| 亚洲色成人一区二区三区小说| 金瓶狂野欧美性猛交xxxx| 亚洲天堂av网| 色丁香久综合在线久综合在线观看| 麻豆国产传媒av福利| 欧美成人aaa| 第四色婷婷基地| 欧美一级淫片免费视频黄| 牛夜精品久久久久久久| 天堂网在线观看视频| 国产精品免费视频一区| 日本中文字幕伦在线观看| 多男操一女视频| 日本不卡1234视频| av综合在线播放| 欧美少妇性生活视频| 香蕉视频黄色在线观看| 欧美女人交a| 午夜久久99| 在线视频一区二区三区四区| av资源种子在线观看| 色av性av丰满av| 国产精品亚洲欧美| 国产精品免费视频二三区| 国产精品免费在线| 丰腴饱满的极品熟妇| 一级片在线视频| sm在线观看| 日韩手机在线导航| 精品欧美一区二区在线观看视频| 国产福利在线播放麻豆| 精品国产乱码久久久久久久久| 精品麻豆一区二区三区| 国产亚洲精品久久久久久移动网络| 国产精品亚洲二区在线观看| 久久久午夜电影| 一本一本久久a久久精品综合小说| 久久久精品日韩| 久久久国产亚洲精品| 91专区视频| 999久久久精品国产| 精品久久久久久亚洲综合网站| 精品偷拍各种wc美女嘘嘘| 日韩深夜福利| 日本网站在线免费观看| 国产成人免费观看视频| 久久99精品久久久久久国产越南| 四虎影院观看视频在线观看| www.99色.com| 91亚洲精品国偷拍自产在线观看| 中日韩脚交footjobhd|