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

首頁 > 編程 > ASP > 正文

ASP操作數(shù)據(jù)庫的類

2024-05-04 11:09:37
字體:
來源:轉載
供稿:網(wǎng)友
對于ASP的使用者來說,在數(shù)據(jù)庫操作上越簡單,就有更多的時間去考慮邏輯上和應用上的代碼,效率也會更高。

今天俺在這裡給大家提供一種數(shù)據(jù)庫操作的思路,這些代碼是俺在長期的ASP應用中不斷完成和修正的,也已經(jīng)用它完成了很多項目了,應該說直接拿去用是沒有問題的。當然本人能力也有限,希望大家一起來討論。


說明:此帖代碼均是VBScript版本。另外最好你對手寫ASP已經(jīng)有一定的基礎。

先簡單介紹一下俺這個類的一些特點:

可同時操作多個不同類型的數(shù)據(jù)庫。
完全不用考慮數(shù)據(jù)類型的差別,再也不用想字符型字段加不加單引號。
調用非常簡單,對數(shù)據(jù)庫的主要操作一般只需要一行代碼。
支持mssql事務回滾。
可自動生成和輸出sql語句方便調試。
使用方法:

1. 修改clsDbctrl.asp文件中的第1行為你自己的數(shù)據(jù)庫位置(修改方法參考下面的CreatConn函數(shù)說明)。如需連接多個數(shù)據(jù)庫可自行添加,格式相同。

2. 在你新建的asp文件中包含此asp文件。如:
<!--#include file="Inc/clsDbctrl.asp" --> 或者:
<!--#include virtual="/Inc/clsDbctrl.asp"-->

3.使用如下代碼應用此類:
一個數(shù)據(jù)庫連接:

<%
OpenConn() '打開數(shù)據(jù)庫連接
Dim db : Set db = New DbCtrl '建立對像
'Your Code Here......
Co(db) : CloseConn() '釋放對象,關閉數(shù)據(jù)庫連接
%>

或者(一個或者多個數(shù)據(jù)庫連接):

<%
Dim db1 : Set db1 = New DbCtrl : db1.dbConn = Oc(a)
Dim db2 : Set db2 = New DbCtrl : db2.dbConn = Oc(b)
'Your Code Here......
Co(db1) : Co(db2)
%>

4.具體操作的例子可以參考各函數(shù)說明內的代碼示例。

方法和屬性概覽(詳細用法及例子在下面):

引用:
CreatConn 生成數(shù)據(jù)庫連接字符串
Oc 建立數(shù)據(jù)庫連接
Co 釋放對像
OpenConn 打開默認數(shù)據(jù)庫連接
CloseConn 關閉默認數(shù)據(jù)庫連接
dbCtrl.dbConn 屬性,獲取要操作的數(shù)據(jù)庫連接,默認值為Conn
dbCtrl.dbErr 屬性,只讀,輸出捕獲的錯誤信息
dbCtrl.Version 屬性,只讀,程序版本信息
dbCtrl.AutoId 方法,自動獲取唯一序列號
dbCtrl.GetRecord 方法,取得符合條件的紀錄集
dbCtrl.GetRecordBySql 方法,根據(jù)sql語句取得紀錄集
dbCtrl.GetRecordDetail 方法,根據(jù)某一條指定紀錄的詳細數(shù)據(jù)
dbCtrl.AddRecord 方法,添加一個新的紀錄
dbCtrl.UpdateRecord 方法,根據(jù)指定條件更新紀錄
dbCtrl.DeleteRecord 方法,刪除符合條件的紀錄
dbCtrl.ReadTable 方法,根據(jù)指定條件獲取某條紀錄中的其他字段的內容
dbCtrl.C 方法,關閉紀錄集對像
dbCtrl.wGetRecord,
dbCtrl.wAddRecord,
dbCtrl.wUpdateRecord,
dbCtrl.wDeleteRecord 這4個方法是取得相應的操作(前面加w)的sql語句


參數(shù)約定:

由于ASP沒有Arguments對象,不能使用動態(tài)參數(shù),所以,在本類的代碼中,使用了Array(數(shù)組)來達到這一效果。本類中的部分參數(shù)可以使用數(shù)組(參數(shù)說明中有注明),但使用數(shù)組時應參照以下格式:

Array("Field1:Value1", "Field2:True", "Field3:100")

對,有點像json的格式,如果涉及到變量,那就這樣:

Array("Field1:" & Value1, "Field2:" & Value2, "Field3:" & Value3)

可以這樣說,本類中的幾乎所有與數(shù)據(jù)庫字段相關的內容都可以用以上的數(shù)組格式來設置條件或者是獲取內容。而這裡最大的特點就是在使用時不用去考慮字段的類型,在字段后跟一個冒號,接著跟上相應的值就行了。如果你經(jīng)常手寫ASP程序的話,你很快就會感受到運用這種方式的魅力,除了數(shù)據(jù)類型不用考慮之外,它也很方便隨時添加和刪除條件。如果你還不明白怎麼用的話沒關係,下面有很多例子可以說明這個問題。

要把ASP的數(shù)據(jù)庫操作封裝起來其實并不難,相信大家以前自己也做過類似的代碼或是借用過其他人的封裝好的代碼。但是就如各位知道的一樣,使用封裝后的代碼一旦出錯,排錯是一個比較麻煩的事情,一般說來,封裝后操作越簡單的排錯也越複雜。俺在寫這些代碼的時候已經(jīng)盡我所能考慮到如果出錯的話如何去排查錯誤,在盡可能簡化用戶操作數(shù)據(jù)庫的代碼的同時可以隨時輸出sql語句排查錯誤。

最后需要說明一點,本文所涉及的ASP數(shù)據(jù)庫操作并不適合大型數(shù)據(jù),如你所知,操作大型數(shù)據(jù)最好還是使用存儲過程之類的東東比較好,以后俺會考慮把對存儲過程的操作也封裝進去。還有一個效率問題,要追求高效率的話,用ASP還是應該考慮COM+等,所以再次聲明,本類適用的對象是中小型ASP項目。

好了,下面奉上詳細使用說明:

一.數(shù)據(jù)庫連接

考慮到大多數(shù)人的使用習慣,在數(shù)據(jù)庫連接上使用了公共過程,所以需要大家在代碼裡自行修改,如果你已經(jīng)建立了數(shù)據(jù)庫連接,把這幾行注釋掉就行了。代碼中內置了MSSql,Access,MySQL,Oracle4種數(shù)據(jù)庫的連接方式,當然你也可以自行在源代碼中增加或刪除。修改例如:

Dim a : a = CreatConn(0, "TestData", "localhost", "username", "userpassword")
Dim b : b = CreatConn(1, "Data/%TestDb%.mdb", "", "", "")

說明一下,第1個參數(shù)可以是字符串。如果是使用Access,則第2個參數(shù)輸入相對路徑和絕對路徑都是可以的,如有密碼也可以在第5個參數(shù)中輸入,如:

Dim c : c = CreatConn("ACCESS", "E:/MyWeb/Data/%TestDB%.mdb", "", "", "mdbpassword")

相關函數(shù):

原 型:CreatConn(dbType, strDB, strServer, strUid, strPwd)
功 能:建立數(shù)據(jù)庫連接字符串
返回值:String
參 數(shù):
dbType : Integer or String 連接數(shù)據(jù)庫類型
(0 or "MSSQL") - Microsoft SQL Server
(1 or "ACCESS") - Microsoft Office Access
(2 or "MYSQL") - MySQL Server
(3 or "ORACLE") - oracle Server
strDB : String 數(shù)據(jù)庫名或數(shù)據(jù)庫地址(Access使用絕對或者相對路徑均可)
strServer : String 數(shù)據(jù)庫服務器地址,Access請留空
strUid : String 數(shù)據(jù)庫用戶名,Access請留空
strPwd : String 數(shù)據(jù)庫密碼

原 型:Oc(connStr)
功 能:打開數(shù)據(jù)庫連接
返回值:Object 數(shù)據(jù)庫連接對像
參 數(shù):
connStr : String 數(shù)據(jù)庫連接字符串,由CreatConn函數(shù)生成

原 型:Co(obj)
功 能:關閉對像
參 數(shù):
obj : Object 要關閉的對象名稱

原 型:OpenConn
功 能:打開默認數(shù)據(jù)庫連接,會自動建立一個名稱為Conn的連接對像
參 數(shù):無

原 型:CloseConn
功 能:關閉名稱為Conn的默認數(shù)據(jù)庫連接對像
參 數(shù):無

二. 數(shù)據(jù)庫操作

下面就是本數(shù)據(jù)庫操作類的函數(shù)功能說明,應該算是手冊了,請多看例子的應用。

原 型:dbCtrl.dbConn(objConn)
功 能:獲取數(shù)據(jù)庫連接對像
參 數(shù):
objConn : Object 已經(jīng)建立的數(shù)據(jù)庫連接對像
舉 例:
Dim db : Set db = New DbCtrl
db.dbConn = Oc(CreatConn(1,"E:/WebSite/MySite/Data/%TestDb%.mdb","","",""))
Co(db)

說 明:此屬性為可選,如果不指定此屬性則默認數(shù)據(jù)連接為頁面上名稱為Conn的數(shù)據(jù)庫連接對像

原 型:dbCtrl.AutoID(TableName)
功 能:自動獲取唯一序列號(自動編號)
返回值:Integer
參 數(shù):
TableName : String 需要獲得唯一序列號的數(shù)據(jù)表名
舉 例:
Dim newId
newId = db.AutoId("TestTable")
Response.Write(newId)

原 型:dbCtrl.GetRecord(TableName,FieldsList,Condition,OrderField,ShowN)
功 能:取得符合條件的紀錄集
返回值:Object 紀錄集對像
參 數(shù):
TableName : String 表名稱
FieldsList : String 字段名稱,用逗號隔開,留空則為全部字段
Condition : String or Array 查詢條件,如果是數(shù)組應遵循前面的參數(shù)約定
orderField : String 排序方式
ShowN : Integer 獲取紀錄的數(shù)量,相當于sql中的 Select Top N
舉 例:
Dim rs
Set rs = db.GetRecord("TestTable","fId,fName,fAge","fSex='男' And IsActive = 1","fName Asc", 0)
While Not rs.eof
Response.Write ("Name is:" & rs(1) & " Age is:" & rs(2) & "<br />")
rs.movenext()
Wend
db.C(rs)

對于以上的例子,用下面的數(shù)組方式指定條件是等價的:

Set rs = db.wGetRecord("TestTable","fId,fName,fAge", Array("fSex:男","IsActive:1"), "fName Asc", 0)

另外,你可以用下面的語句來查看這個函數(shù)生成的sql語句:

Response.Write(db.wGetRecord("TestTable","fId,fName,fAge", Array("fSex:男","IsActive:1"), "fName Asc", 0))

如你所見,只需要在原來的函數(shù)前加一個w即可。

原 型:dbCtrl.GetRecordBySQL(strSelect)
功 能:根據(jù)sql語句取得紀錄集
返回值:Object 紀錄集對像
參 數(shù):
strSelect : String 用于生成記錄集的SQL語句
舉 例:
Dim rs
Set rs = db.GetRecordBySQL("Select a.Id, a.LastName, b.Group From User a InnerJoin Depart b On a.GroupId = b.GroupId")
'Your Code Here ...
db.C(rs)

原 型:dbCtrl.GetRecordDetail(TableName, Condition)
功 能:根據(jù)某一條指定紀錄的詳細數(shù)據(jù)
返回值:Object 紀錄集對像
參 數(shù):
TableName : String 表名稱
Condition : String or Array 查詢條件,如果是數(shù)組應遵循前面的參數(shù)約定
舉 例:
Dim rs, Id
Id = Request.QueryString("id")
Set rs = db.GetRecordDetail("TestTable","Id=" & id)
'Your Code here...
db.C(rs)

說 明:就像你已經(jīng)看出來的一樣,這個最常用在打開某個詳細頁面(比如新聞內容頁面)

原 型:dbCtrl.AddRecord(TableName, ValueList)
功 能:添加一個新的紀錄
返回值:新記錄的Id號(成功) or 0 (失敗)
參 數(shù):
TableName : String 表名稱
ValueList : Array 插入表的字段和值,只能是數(shù)組且應遵循前面的參數(shù)約定
舉 例:
Dim fName, fSex, fWorkYear, fBirth
fName = "王二壇"
fSex = "男"
fWorkYear = 12
fBirth = Cdate("1981-10-23")
Dim result
result = db.AddRecord("TestTable",Array("Name:"&fName, "Sex:"&fSex, "WorkYear:"&fWorkYear, "Birthday:"&fBirth, "IsActive:True"))
If result<>0 Then
Response.Write("添加記錄成功!此記錄的自動編號Id為" & result)
End If

看見了吧,真的不用考慮字段的類型是什麼滴。
如果你想要代碼中的字段和值看得更清楚一點,也可以這樣寫,但憑卿之所好:

result = db.AddRecord("TestTable",Array("Name:" & fName,_
"Sex:" & fSex,_
"WorkYear:" & fWorkYear,_
"Birthday:" & fBirth,_
"IsActive:True"))

另外,你可以用下面的語句來查看這個函數(shù)生成的sql語句:

Response.Write(db.wAddRecord("TestTable",Array("Name:"&fName, "Sex:"&fSex, "WorkYear:"&fWorkYear, "Birthday:"&fBirth, "IsActive:True")))

說 明:返回的Id值用的是比較笨的方法,并不能保證在并發(fā)數(shù)據(jù)量大的時候的準確性,慎用。

原 型:dbCtrl.UpdateRecord(TableName, Condition, ValueList)
功 能:根據(jù)指定條件更新紀錄
返回值:1 (成功) or 0 (失敗)
參 數(shù):
TableName : String 表名稱
Condition : String or Array 更新條件,如果是數(shù)組應遵循前面的參數(shù)約定
ValueList : String or Array 更新的字段及值,如果是數(shù)組應遵循前面的參數(shù)約定
舉 例:
Dim fName, fWorkYear
fName = "王三壇"
fWorkYear = 10
Dim result
result = db.UpdateRecord("TestTable", "UId = 1308", Array("Name:"&fName, "WorkYear:"&fWorkYear))
If result<>0 Then
Response.Write("更新數(shù)據(jù)成功!")
End If

另外,你可以用下面的語句來查看這個函數(shù)生成的sql語句:

Response.Write(db.wUpdateRecord("TestTable", "UId = 1308", Array("Name:"&fName, "WorkYear:"&fWorkYear)))

原 型:dbCtrl.DeleteRecord(TableName,IDFieldName,IDValues)
功 能:刪除符合條件的紀錄
返回值:1 (成功) or 0 (失敗)
參 數(shù):
TableName : String 表名稱
IDFieldName : String 表的Id字段的名稱
IDValues : String or Array 刪除條件,可以是由逗號隔開的多個Id號,如果是數(shù)組應遵循前面的參數(shù)約定
舉 例:
Dim ids, result
ids = Request.Form("selectid") '可以假設這裡獲取的值是 12, 34, 256, 314 (復選框提交的值都這樣)
result = db.DeleteRecord("TestTable", "UId", ids)
If result<>0 Then
Response.Write("刪除數(shù)據(jù)成功!")
End If

當然,你也可以用字符串或者數(shù)組指定其它的條件,比如:

result = db.DeleteRecord("TestTable", "UId", "IsActive = 0 And FirstName = 'Tom'")

另外,你可以用下面的語句來查看這個函數(shù)生成的sql語句:

Response.Write(db.wDeleteRecord("TestTable", "UId", ids))

原 型:dbCtrl.ReadTable(TableName, Condition, GetFieldNames)
功 能:根據(jù)指定條件獲取某條紀錄中的其他字段的內容
返回值:String (GetFieldNames為單個字段) or Array (GetFieldNames為多個字段)
參 數(shù):
TableName : String 表名稱
Condition : String or Array 查詢條件,如果是數(shù)組應遵循前面的參數(shù)約定
GetFieldNames : String 單個字段名或者由逗號隔開的多個字段名
舉 例:
Dim uid, result
uid = rs("postid") '假設這裡是頁面上某個記錄集中的用戶id值
result = db.ReadTable("UserTable","UId=" & uid, "UserName")
Response.Write("發(fā)佈者:" & result)

我不得不說,在實際應用中,這個函數(shù)可能是用得最多的,你上面看到的就是一個非常常用的例子,從一個值去獲取另外一個表中某字段值等于該值的另外一個字段的值(有點拗口,不過確實就是這個意思)。下面的例子將告訴你如何根據(jù)這個值獲得多個相應的值。

Dim uid, result
uid = rs("postid") '假設這裡是頁面上某個記錄集中的用戶id值
result = db.ReadTable("UserTable","UId=" & uid, "UserName,UserSex,UserAge")
Response.Write("發(fā)佈者:" & result(0) & "<br /> 性別:" & result(1) & "<br /> 年齡:" &result(2))

如你所見,就這麼簡單,輸入多個字段名稱得到的是一個數(shù)組。

原 型:dbCtrl.C(objRs)
功 能:關閉紀錄集對像
參 數(shù):
objRs : Object 頁面上的某個記錄集對像
舉 例:
Dim rs
Set rs = db.GetRecordDetail("TestTable","Id=123" )
'Your Code here...
db.C(rs)

這個函數(shù)上面的許多例子都用了,就不多解釋了,它等同于rs.close : set rs = nothing。
clsDbctrl.rar

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
www.黄色国产| 国产aⅴ爽av久久久久| 电影一区二区三区久久免费观看| 亚洲人在线观看视频| 蜜桃av噜噜一区二区三区麻豆| 91xxx视频| 看黄网站在线| 亚洲va综合va国产va中文| 久操av在线| 国产99久久久国产精品潘金| 婷婷色综合网| 国产日韩在线免费| 国产免费一区二区三区四在线播放| 精品国产av色一区二区深夜久久| 免费黄色片网站| 电影91久久久| 亚洲国产成人精品电影| 欧美亚洲禁片免费| 强迫凌虐淫辱の牝奴在线观看| 福利电影导航| 免费看成人a| 成人免费网站入口| 国产欧美日韩亚洲| av在线免费观看网站| 国内国产精品久久| 日本黄色一级网站| 中文字幕一二三| 国产在线不卡一卡二卡三卡四卡| 亚洲日本在线播放| 99久久久久国产精品| 亚洲国产美女视频| 真人bbbbbbbbb毛片| 国产成人日日夜夜| 一广人看www在线观看免费视频| 国产成人艳妇aa视频在线| 国产精品国产三级国产普通话三级| 日韩国产在线观看| 91精彩视频在线播放| 在线免费视频一区| www.午夜精品| av在线电影播放| www.男人的天堂.com| 亚洲精品高清在线观看| 9999精品| 波多野结衣国产| 久久精品人人做人人综合| 午夜国产不卡在线观看视频| 蜜臀av免费在线观看| 2019中文字幕在线视频| 亚洲久久成人| 好吊日免费视频| 中文字幕在线视频第一页| 中文字幕视频免费观看| 99re6热在线精品视频播放| 欧美另类高清videos的特点| 成人在线激情网| 卡通动漫精品一区二区三区| 91免费综合在线| 校园春色亚洲色图| 99xxxx成人网| 激情欧美一区二区三区中文字幕| 亚洲国产精品女人久久久| 国内精品自线一区二区三区视频| 欧美视频久久久| 欧美一二三不卡| 美女露隐私免费网站| 国产精品老牛影院在线观看| 国产馆av播放| 九色.com| 精品一区三区| 800av在线免费观看| 九九热久久免费视频| 91精品视频在线播放| 久久天天久久| 久久九九精品视频| 亚洲欧洲日韩一区二区三区| 91精品国产91久久久久久久久| 强制捆绑调教一区二区| 亚洲精品在线影院| 亚洲综合日韩中文字幕v在线| 老鸭窝一区二区久久精品| 色偷偷中文字幕| 国产青青草在线| 青春娱乐分类视频精品2动漫| 亚洲精品乱码视频| 国产精品v欧美精品v日韩精品| 欧美专区日韩| 日韩av电影免费| 手机av在线| 激情小说一区| 日本va欧美va精品发布| 欧美视频不卡| 69堂免费视频| 国风产精品一区二区| 国产私拍福利精品视频二区| 波多野结衣免费观看| 国产精品一区二区性色av| 国产精品私房写真福利视频| 蜜桃一区二区三区| 日本肉肉一区| 欧美色女视频| 国产精品99久久久久久宅男| 欧美xxxx黑人又粗又长| 久久精品国产一区二区电影| 极品销魂美女一区二区三区| 99久久精品网站| 欧美天堂在线观看| 成人免费视频久久| 欧美激情专区| 亚洲精品tv| 三级在线视频| 人妻人人澡人人添人人爽| 女性女同性aⅴ免费观女性恋| 91麻豆一区二区| 黄色成人av在线| av av片在线看| 日本在线看片免费人成视1000| 亚洲成av人片在线观看香蕉| 日韩综合一区二区| 狠狠色狠狠色综合婷婷tag| 久久综合久久久久88| 国产成人一区二区在线| 午夜久久久久久久久久影院| 国产免费一区视频观看免费| 欧美日韩一级黄色片| 成人在线观看免费完整| 国产精品视频免费在线观看| 逼特逼视频在线| 亚洲自拍另类欧美丝袜| 亚洲性猛交xxxx乱大交| 午夜裸体女人视频网站在线观看| 中文一区一区三区高中清不卡| 国产精品粉嫩av| 中文在线字幕免费观看| 日韩精品a在线观看91| 91在线视频播放| 亚洲欧美偷拍一区| 欧美日韩精品一区二区三区视频播放| 久9re热视频这里只有精品| 国产精品久久免费看| 欧美精品在欧美一区二区| 中文字幕成人免费视频| 日韩av网站在线播放| 大吊一区二区三区| 亚洲综合伊人久久大杳蕉| 国产欧美日韩专区| 欧美性猛交视频| 婷婷色在线播放| 人人爽人人爽人人片| 无码日韩人妻精品久久蜜桃| 678五月天丁香亚洲综合网| 国产白丝网站精品污在线入口| 国产日韩欧美电影在线观看| 日韩 欧美 高清| 久久最新资源网| 欧美乱大交xxxxx潮喷l头像| 亚洲最大免费视频| 91av在线免费视频| 日本在线观看一区二区| 久久久久久久久久久久国产| 国产女人18水真多毛片18精品| 亚洲色图在线看| 国产精品18久久久| 欧美激情成人在线视频| 亚洲色图网站| 翔田千里精品久久一区二| 免费网站在线观看视频| 亚洲巨乳在线| 国产精品178页| 三上悠亚在线一区二区| 久久精品视频中文字幕| 久久久久北条麻妃免费看| 亚洲人线精品午夜| 天天爽夜夜爽| 日本黄色不卡视频| 好吊视频一区二区三区| 日韩毛片在线视频| 亚洲一级一区| 国产精品com| 四虎永久在线精品免费一区二区| 中文字幕999| 九义人在线观看完整免费版电视剧| 久久国产精品免费观看| 精品欧美午夜寂寞影院| 日本美女视频一区| www.av一区视频| 99视频在线视频| 欧美视频第三页| av毛片免费看| 先锋影音男人| 亚洲国产精品成人va在线观看| 日本精品久久久久| 国产精品成人在线| 欧美喷潮久久久xxxxx| 精品久久久影院| 国产女18毛片多18精品| 国产精品久久99久久| 2020亚洲男人天堂| 亚洲一区国产一区| 成年在线播放小视频| 777久久久精品一区二区三区| 97久久人人超碰caoprom欧美| 亚洲国产精久久久久久| 日本一区二区三区播放| 天天看天天操| 色猫咪免费人成网站在线观看| 一二三四在线观看视频韩国| 污片视频在线免费观看| 欧美日韩国产精品一卡| 免费在线观看av| 亚洲精品美女视频| 中文字幕国产在线| 天天操综合520| 欧美日韩一区 二区 三区 久久精品| 亚洲av成人精品一区二区三区在线播放| 在线视频亚洲欧美中文| 一区二区三区四区乱视频| 久久久久久久性| 久久久久久久伊人| 黄污视频在线看| 超薄肉色丝袜一二三| 在线观看视频在线观看| 成年人网站在线免费观看| 日本久久久a级免费| 欧美性xxxxx极品视频| 五月天婷婷综合社区| 精品视频99| 国产成人在线视频免费观看| 色哟哟免费视频| 91青青国产在线观看精品| 不卡的国产精品| 国产女教师bbwbbwbbw| 国产呦系列欧美呦日韩呦| 国产高清一区| 一级黄色大片免费| 欧美在线影院在线视频| 免费视频一区三区| 日韩一级片免费视频| 欧美va天堂| 亚洲人成电影网站色…| 欧美有码视频| 黑人精品欧美一区二区蜜桃| 人人爱人人爽| 日本精品久久中文字幕佐佐木| 天天操 夜夜操| 亚洲色成人网站www永久四虎| 中日韩午夜理伦电影免费| 亚洲一区精品在线| 日本年轻的继坶中文字幕| 久久国产夜色精品鲁鲁99| 日韩中文娱乐网| √天堂资源中文www| 老司机精品久久| 国内成+人亚洲| 在线黄色的网站| 美女国产精品| 国产精品久久久久久吹潮| 亚洲乱亚洲乱妇无码| av网站无病毒在线| 97人人模人人爽人人喊38tv| 久久久久毛片免费观看| 亚洲国产精品一区二区三区| 在线一区二区三区做爰视频网站| 丰满放荡岳乱妇91ww| 日本一区二区免费看| 欧美无遮挡国产欧美另类| 国产精品1区2区3区4区| 美乳少妇欧美精品| 欧美日韩免费一区二区三区视频| aaaaa一级片| aaa一区二区三区| 色噜噜狠狠色综合中国| 日韩欧美在线一区| 伊人网免费视频| 国产精品自拍偷拍视频| 国产激情在线免费观看| 欧美日韩一卡二卡| 中国字幕a在线看韩国电影| 在线免费黄色网| 农村少妇久久久久久久| 国产性做久久久久久| 亚洲在线视频免费| 一区二区三区精品在线观看| 中国黄色在线视频| 99一区二区| www浪潮av99com| 国产精品一区二区在线观看不卡| 我不卡伦不卡影院| 538精品在线视频| 国产精品一区二区精品| 亚洲国产精品999| 一级片视频网站| 高潮一区二区三区乱码| 最近中文视频在线| 日本不卡免费新一二三区| 51xx午夜影福利| 国产日韩欧美亚洲一区| 成人av综合网| 伊人久久大香线| 精品av一区二区| 中文字幕第315页| 成人在线直播| 在线观看免费国产小视频| 一区二区在线中文字幕电影视频| 国产成人鲁色资源国产91色综| 一级aaa毛片| 国产专区中文字幕| 欧美精品在线播放| 国产香蕉久久精品综合网| 玛丽玛丽电影原版免费观看1977| 亚洲婷婷国产精品电影人久久| av免费观看久久| 久久成人国产| 欧美伦理片在线看| 久久在线视频精品| 美女网站视频在线| 欧美狂野另类xxxxoooo| 久久精品一区二区国产| 国产在线不卡一区二区三区| 日韩免费视频网站| 日本一区二区三区视频在线观看| 538任你躁在线精品视频网站| 欧美精品密入口播放| 宅男在线观看免费高清网站| 狠狠躁夜夜躁人人爽视频| 在线观看天堂av| 久热在线视频观看| 日韩有码免费视频|