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

首頁(yè) > 編程 > Delphi > 正文

在DELPHI程序中使用ADO對(duì)象存取ODBC數(shù)據(jù)庫(kù)

2019-11-18 18:49:16
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
作為一個(gè)asp愛(ài)好者,筆者經(jīng)常在ASP頁(yè)面中使用ADO對(duì)象操作ODBC數(shù)據(jù)庫(kù),覺(jué)得用ASP創(chuàng)建Web應(yīng)用系統(tǒng)確實(shí)是挺方便的。雖然在編程生涯中,筆者更喜歡Borland系列產(chǎn)品,對(duì)微軟產(chǎn)品有點(diǎn)排斥,但對(duì)ASP卻是例外。某天,忽然想到,ADO對(duì)象是一個(gè)標(biāo)準(zhǔn)OLE對(duì)象,如果在Delphi應(yīng)用程序中能利用ADO操作數(shù)據(jù)庫(kù),應(yīng)該挺不錯(cuò)。尤其在用DELPHI做網(wǎng)絡(luò)數(shù)據(jù)庫(kù)應(yīng)用程序時(shí),如果所在的Web站點(diǎn)是WINNT站點(diǎn)并且支持ASP頁(yè)面,那就可以用ADO對(duì)象訪問(wèn)ODBC數(shù)據(jù)庫(kù),而不用把那么大的BDE再上載到站點(diǎn)上去。這樣就可充分利用DELPHI和ASP的編程優(yōu)勢(shì),做出更好的ISAPI/NSAPI/CGI。經(jīng)過(guò)編程和測(cè)試,在Delphi中可以成功地用ADO對(duì)象存取ODBC數(shù)據(jù)庫(kù),現(xiàn)將本人的使用經(jīng)驗(yàn)寫(xiě)出來(lái),與大家共享,讓我們多一個(gè)訪問(wèn)ODBC數(shù)據(jù)庫(kù)的方法。

  在32位的Delphi中,可以聲明一個(gè)variant變量(如AVariant),然后通過(guò)CreateOleObject創(chuàng)建一個(gè)OLE對(duì)象,如AVariant:=CreateOleObject ('ADODB.Connection')可以獲得一個(gè)數(shù)據(jù)庫(kù)連接對(duì)象的實(shí)例,然后就可以利用該對(duì)象的方法和屬性來(lái)操作ODBC數(shù)據(jù)庫(kù)了。
下面簡(jiǎn)單介紹一下訪問(wèn)ODBC數(shù)據(jù)庫(kù)所用到的ADO對(duì)象及其方法和屬性。
1、數(shù)據(jù)庫(kù)連接對(duì)象(ADODB. Connection)
該對(duì)象用于與ODBC數(shù)據(jù)庫(kù)建立連接,所有對(duì)數(shù)據(jù)庫(kù)的操作均通過(guò)該連接進(jìn)行。
數(shù)據(jù)庫(kù)連接對(duì)象ADODB. Connection的作用象Delphi中的TDatabase對(duì)象。
建立一個(gè)連接對(duì)象的方法為(AConnection為Variant類型變量):
AConnection:=CreateOleObject('A DODB.Connection')
用于建立連接的方法為Open,使用語(yǔ)法為(以對(duì)象AConnection為例):
AConnection.Open( ConnectionString, UserId, PassWord )
三個(gè)參數(shù)均為字符串類型,其中UserId和Password為用戶名稱和用戶密碼,用于訪問(wèn)數(shù)據(jù)庫(kù)使用時(shí)可以省略,因?yàn)樵贑onnectionString同樣可以指定用戶名稱和用戶密碼。ConnectionString是用來(lái)說(shuō)明ODBC數(shù)據(jù)源信息的字符串,其格式為:
'PRovider=ProviderName; DSN=DSNName; DRIVER=driver; SERVER=server; DATABASE=database; UID=user; PWD=password'
其中:
Provider:數(shù)據(jù)提供者,默認(rèn)狀態(tài)下為MSDASQL,為微軟OLEDB,通常省略;
DSN:要打開(kāi)的數(shù)據(jù)庫(kù)對(duì)應(yīng)的OBDC系統(tǒng)數(shù)據(jù)源(DSN),是可選參數(shù);
DRIVER:要打開(kāi)的數(shù)據(jù)庫(kù)所用的驅(qū)動(dòng)程序名稱,如access對(duì)應(yīng)Microsoft Access Driver (*.mdb),是可選參數(shù);
SERVER:要打開(kāi)的數(shù)據(jù)庫(kù)所在的服務(wù)器名稱,本機(jī)可用(local),是可選參數(shù);
DATABASE:要打開(kāi)的數(shù)據(jù)庫(kù)名稱,是可選參數(shù);
UID:用戶名稱,用來(lái)訪問(wèn)數(shù)據(jù)庫(kù),是可選參數(shù);
PWD:用戶密碼,用來(lái)訪問(wèn)數(shù)據(jù)庫(kù),是可選參數(shù)。
以上參數(shù)均為可選參數(shù),但必須提供足夠的信息來(lái)描述一個(gè)系統(tǒng)數(shù)據(jù)源。
假如已經(jīng)定義了一個(gè)ODBC的系統(tǒng)DSN,名稱為MyDsn,那么就可用以下語(yǔ)句建立一個(gè)數(shù)據(jù)庫(kù)連接:
AConnection.Open('DSN=MyDsn');
為了防止DSN不存在或其設(shè)置被他人修改時(shí)造成應(yīng)用程序運(yùn)行錯(cuò)誤,可以用ADODB.Connection 創(chuàng)建一個(gè)臨時(shí)ODBC數(shù)據(jù)源,這樣可以保證我們使用的系統(tǒng)DSN的參數(shù)設(shè)置是正確的。下面的語(yǔ)句可以創(chuàng)建一個(gè)臨時(shí)ODBC系統(tǒng)DSN,對(duì)應(yīng)一個(gè)ACCESS數(shù)據(jù)庫(kù),路徑為C:Inetpub wwwroot test.mdb:
AConnection.open('Driver= {Microsoft Access Driver (*.mdb)};DBQ=C:inetpub wwwroot est.mdb')
建立一個(gè)ADODB.Connection后,如果不需要返回操作結(jié)果(如刪除,修改,更新等操作)就可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行正常的SQL操作了,此時(shí)應(yīng)用ADODB.Connection的另外一個(gè)方法Execute,使用語(yǔ)法為:
AConnection.Execute( strSQL );
其中strSQL為執(zhí)行操作的SQL語(yǔ)句,如刪除操作可以為:delete from wfjcommu。用AConnection.Close關(guān)閉一個(gè)數(shù)據(jù)庫(kù)連接。
2、數(shù)據(jù)集對(duì)象(ADODB. RecordSet)
如果要執(zhí)行查詢操作并返回查詢結(jié)果,或者要更方便地操作數(shù)據(jù)表,那就需要用到數(shù)據(jù)集對(duì)象了。
數(shù)據(jù)集對(duì)象ADODB.RecordSet的作用象Delphi中的TTable或TQuery對(duì)象。
建立一個(gè)數(shù)據(jù)集對(duì)象的方法為(ARecordSet為Variant類型變量):
ARecordSet:=CreateOleObject ('ADODB.RecordSet')
從數(shù)據(jù)表取得數(shù)據(jù)的方法為Open方法,具體使用方法為:
ARecordSet.Open( strCommand,ActiveConnection,int CursorType,intLockType, intCommandType );
其中:
strCommand:字符串,為命令參數(shù),可以是一個(gè)Table名稱,可以是一個(gè)SQL語(yǔ)句,也可以是一個(gè)服務(wù)器上的存儲(chǔ)過(guò)程(StoredProc)名稱,具體需要后面的參數(shù)intCommandType來(lái)指定。
ActiveConnection:要使用的數(shù)據(jù)庫(kù)連接,是一個(gè)ADODB. Connection對(duì)象。
intCursorType:長(zhǎng)整數(shù),數(shù)據(jù)集的Cursor類型,可選參數(shù),請(qǐng)參見(jiàn)程序中注釋。
intLockType:長(zhǎng)整數(shù),對(duì)數(shù)據(jù)表的加鎖類型,可選參數(shù),請(qǐng)參見(jiàn)程序中注釋。
intCommandType:長(zhǎng)整數(shù),命令參數(shù)的類型,用來(lái)指明strCommand的作用,可以指定strCommand為命令(如SQL語(yǔ)句)或數(shù)據(jù)表(TTable)或儲(chǔ)存過(guò)程(StoredProc),可選參數(shù),請(qǐng)參見(jiàn)程序中注釋。
如執(zhí)行一個(gè)SQL查詢,可以采用如下語(yǔ)句:
ARecordSet.Open('Select * from wfjcommu',adOpenStatic,ad LockOptimistic,adCmdText);
其它常見(jiàn)屬性和方法與TTable和TQuery相比較如下(具體請(qǐng)見(jiàn)ASP幫助文件):
eof,bof: eof,bof.MoveFirst, MoveLast: First, LastMovePrevious, MoveNext: Prior, NextMove: MoveByAddNew: appendUpdate: PostClose: close
Delete加Update:delete,所有對(duì)數(shù)據(jù)表的修改均須用Update使操作有效,這與Delphi不同。
Fields[FieldNo]: Fields[FieldNo]
Fields['FieldName']: FieldByName('FieldName')
3、其他常見(jiàn)對(duì)象(與Delphi對(duì)應(yīng)的對(duì)象):
ADODB.Field: TField ADODB.Parameter: TPara ADODB.Error: EDBEngineError
ADODB.Command:無(wú) ADODB.Property:無(wú)
下面來(lái)看一個(gè)應(yīng)用例子:
procedure TForm1.Button1Click(Sender: TObject);
{*****************************************************
用ADO操作ODBC數(shù)據(jù)庫(kù)
本程序中,將創(chuàng)建一個(gè)臨時(shí)的ODBC系統(tǒng)數(shù)據(jù)源,指向一個(gè)MsAccess數(shù)據(jù)庫(kù),然后對(duì)其中的數(shù)據(jù)表進(jìn)行顯示、增加、修改、刪除和查詢操作
注意:請(qǐng)?jiān)赨ses語(yǔ)句中包含ComObj單元
*****************************************************}
const{一些常量聲明,詳細(xì)請(qǐng)參見(jiàn)adovbs.inc}
{---- CommandType的常量說(shuō)明 ----}
adCmdUnknown = 0008;//未知,需要系統(tǒng)來(lái)判斷,速度慢,為缺省值
adCmdText = 0001;//命令語(yǔ)句如SQL語(yǔ)句
adCmdTable = 0002;//數(shù)據(jù)表名稱
adCmdStoredProc = 0004;//存儲(chǔ)過(guò)程名稱

{---- CursorType的常量說(shuō)明 ----}
adOpenForwardOnly = 0;//只能由前向后單向訪問(wèn),為缺省值
adOpenKeyset = 1;//可見(jiàn)其他用戶對(duì)數(shù)據(jù)的修改,但對(duì)其它用戶的增加和刪除不可見(jiàn)
adOpenDynamic = 2;//其他用戶對(duì)數(shù)據(jù)的增加修改和刪除均可見(jiàn)
adOpenStatic = 3;//其他用戶對(duì)數(shù)據(jù)的增加修改和刪除均不可見(jiàn)

{---- LockType的常量說(shuō)明 ---}
adLockReadOnly = 1;//只讀,為缺省值
adLockPessimistic = 2;//在修改時(shí),按單個(gè)記錄鎖定
adLockOptimistic = 3;//在修改后更新時(shí),按單個(gè)記錄鎖定
adLockBatchOptimistic = 4;//在成批更新時(shí)記錄鎖定
var
AConnection, ARecordSet : variant;
longintTemp : integer;
strTemp : string;
intIndex : integer;
begin
{創(chuàng)建一個(gè)臨時(shí)的ODBC數(shù)據(jù)源,指向一個(gè)MsAccess數(shù)據(jù)庫(kù),并利用此DSN建立一個(gè)數(shù)據(jù)庫(kù)連接}
AConnection := CreateOleObject('ADODB.Connection');
AConnection.Open('Driver={Microsoft Access Driver (*.mdb)};DBQ=C:inetpubwwwroot est');

{建立一個(gè)數(shù)據(jù)集對(duì)象,并從數(shù)據(jù)表中提取數(shù)據(jù)}
ARecordSet := CreateOleObject('ADODB.RecordSet');
ARecordSet.open( 'wfjcommu',AConnection,adOpenStatic,adLockOptimistic,adCmdTable );

memo1.lines.clear;
memo1.lines.add('********數(shù)據(jù)表原有的內(nèi)容如下********');
{顯示各個(gè)域的域名}
strTemp := ';
for intIndex := 0 to ARecordSet.Fields.count - 1 do
strTemp := strTemp + ARecordSet.Fields[intIndex].name+';';
memo1.lines.add( strTemp );

{顯示各個(gè)域的內(nèi)容}
while not ARecordSet.eof do
begin
strTemp := ';
for intIndex := 0 to ARecordSet.Fields.count - 1 do
strTemp := strTemp + ARecordSet.Fields[intIndex].value+';';
memo1.lines.add( strTemp );
ARecordSet.MoveNext;//移到下條,Next
end;

{增加一個(gè)記錄}
ARecordSet.AddNew;//增加,Append
ARecordSet.Fields['AName'] := '1';//以FieldByName的方式存取
ARecordSet.Fields['Portable'] := '2';
ARecordSet.Fields(2) := '3';//以Fields[index]的方式存取
ARecordSet.Fields(3) := '4';
ARecordSet.Fields(4) := '5';
ARecordSet.Update;//更新,Post
ARecordSet.MoveFirst;//移到首條,F(xiàn)irst
memo1.lines.add('********增加了一條記錄后的數(shù)據(jù)表的內(nèi)容如下********');
{顯示各個(gè)域的內(nèi)容}
while not ARecordSet.eof do
begin
strTemp := ';
for intIndex := 0 to ARecordSet.Fields.count - 1 do
strTemp := strTemp + ARecordSet.Fields[intIndex].value+';';
memo1.lines.add( strTemp );
ARecordSet.MoveNext;//移到下條,Next
end;

{修改最后一條記錄}
ARecordSet.MoveLast;
ARecordSet.Fields['AName'] := '11';//以FieldByName的方式存取
ARecordSet.Fields['Portable'] := '22';
ARecordSet.Fields(2) := '33';//以Fields[index]的方式存取
ARecordSet.Fields(3) := '44';
ARecordSet.Fields(4) := '55';
ARecordSet.Update;//更新,Post
ARecordSet.MoveFirst;//移到首條,F(xiàn)irst
memo1.lines.add('********修改了最后一條記錄后的數(shù)據(jù)表的內(nèi)容如下********');
{顯示各個(gè)域的內(nèi)容}
while not ARecordSet.eof do
begin
strTemp := ';
for intIndex := 0 to ARecordSet.Fields.count - 1 do
strTemp := strTemp + ARecordSet.Fields[intIndex].value+';';
memo1.lines.add( strTemp );
ARecordSet.MoveNext;//移到下條,Next
end;

{刪除最后一條記錄}
ARecordSet.MoveLast;//移到末條,Last
ARecordSet.delete;//刪除,delete
ARecordSet.Update;//更新,在Delphi不需要
ARecordSet.MoveFirst;//移到首條,F(xiàn)irst
memo1.lines.add('********刪除了最后一條記錄后的數(shù)據(jù)表的內(nèi)容如下********');
{顯示各個(gè)域的內(nèi)容}
while not ARecordSet.eof do
begin
strTemp := ';
for intIndex := 0 to ARecordSet.Fields.count - 1 do
strTemp := strTemp + ARecordSet.Fields[intIndex].value+';';
memo1.lines.add( strTemp );
ARecordSet.MoveNext;//移到下條,Next
end;

ARecordSet.Close;{關(guān)閉數(shù)據(jù)集}

{用SQL語(yǔ)句進(jìn)行查詢,查詢姓名為“張三”的記錄}
{注意,在SQL語(yǔ)句中,字符串應(yīng)該用單引號(hào)包括起來(lái)}
ARecordSet.open( 'select * from wfjcommu where AName = '張三'',
AConnection,adOpenStatic,adLockOptimistic,adCmdText );
memo1.lines.add('********張三的內(nèi)容如下********');
memo1.lines.add( '共有' + IntToStr( ARecordSet.RecordCount ) + '條匹配的記錄' );
{顯示各個(gè)域的內(nèi)容}
while not ARecordSet.eof do
begin
strTemp := ';
for intIndex := 0 to ARecordSet.Fields.count - 1 do
strTemp := strTemp + ARecordSet.Fields[intIndex].value+';';
memo1.lines.add( strTemp );
ARecordSet.MoveNext;//移到下條,Next
end;

{關(guān)閉數(shù)據(jù)集和數(shù)據(jù)庫(kù)連接}
ARecordSet.close;
AConnection.close;
end;
聽(tīng)別人說(shuō)總不如自己看實(shí)際的例子來(lái)體會(huì)。在這個(gè)例子中,將演示如何利用ADO對(duì)象來(lái)對(duì)一個(gè)數(shù)據(jù)表進(jìn)行查詢、增加記錄、修改記錄和刪除記錄操作。具體的用法請(qǐng)參見(jiàn)程序中的注釋,如果有點(diǎn)Delphi數(shù)據(jù)庫(kù)編程經(jīng)驗(yàn),相信不難理解。
在我們的例子使用的數(shù)據(jù)庫(kù)為Test.MDB,其中有一個(gè)數(shù)據(jù)表為wfjcommu,有五個(gè)字段AName、Portable、Tel、BP、PostAddress,分別表示姓名、手機(jī)號(hào)、電話號(hào)碼、呼機(jī)號(hào)碼和通信地址。
以上程序在PWIN98+ Delphi 3.0+PWS(Personal Web Server)4.0下調(diào)試通過(guò)。

上一篇:Delphi4的Winsocket編程

下一篇:Delphi中獲取打印機(jī)設(shè)備名和端口名

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門圖片

新聞熱點(diǎn)

疑難解答

圖片精選

網(wǎng)友關(guān)注

在线视频一二三区| av色综合久久天堂av色综合在| 久久影音资源网| 高清免费观看在线| 男女污污的视频| 亚洲丝袜精品| 天天免费亚洲黑人免费| 欧美中文字幕在线观看视频| 国产成人免费在线视频| 国产欧美综合精品一区二区| 天天干天天骑| 欧美码中文字幕在线| 一二三在线视频社区| 日本a一级在线免费播放| 7m精品国产导航在线| 一区二区久久| 一本大道东京热无码aⅴ| 国产精品视频二| 中文字幕日韩在线| 国产无遮挡在线观看| 阿v视频在线| 3d黄动漫网站| 天天综合网久久| 黄色网页大全| 操bbb操bbb| 美女黄毛**国产精品啪啪| 这里只有精品在线| 色综合天天综合| 美女大黄三级视频在线观看| 在线成人黄色| 在线免费看黄色| 国产高清av在线播放| 国产精品午夜一区二区三区| 国产精品99久久久久久www| 好吊日精品视频| a级一a一级在线观看| 亚洲国产成人精品电影| 欧美a级成人淫片免费看| 成人在线中文字幕| 日韩欧美黄色大片| av在线影音| 日韩.com| 99久久精品日本一区二区免费| 欧美性猛交xxx乱大交3蜜桃| 亚洲国产日韩在线观看| 亚洲一区二区在线播放相泽| 一个人看的www在线免费视频| 91色在线视频| 亚洲优女在线| 久久悠悠精品综合网| 欧美伦理一区二区| 日韩av官网| 人妻体内射精一区二区三区| 久久免费一区| 亚洲一区精彩视频| 国产高清在线免费| 高清精品在线| 正在播放国产对白害羞| 天涯成人国产亚洲精品一区av| 精品久久ai| 影音先锋2020色资源网| 亚洲精品免费一区亚洲精品免费精品一区| 日韩欧美小视频| 国产精品免费观看视频| 91福利在线观看视频| av一区二区不卡| 国产对白videos麻豆高潮| 国产美女娇喘av呻吟久久| 午夜免费播放观看在线视频| 精品成a人在线观看| 欧美偷拍综合| 国产精品911| 久久精品国产99久久99久久久| 国产成年人视频网站| 91九色精品视频| 91久久精品国产91久久| 欧美色视频一区二区三区在线观看| 丰满少妇在线观看| 精品毛片乱码1区2区3区| 91产国在线观看动作片喷水| 3d动漫一区二区三区在线观看| 欧美在线中文字幕| 中文字幕第一页在线| 日韩精品久久久毛片一区二区| 91免费在线视频网站| 亚洲av电影一区| 日本黄区免费视频观看| 亚洲国产精品久久久久爰色欲| 欧美视频免费看| 视频二区在线观看| 青青青青在线视频| 国产一区视频网站| 你懂得在线网址| 国产又黄又猛又粗又爽的视频| www.日韩在线| 国产三级视频在线播放线观看| 日韩欧美激情视频| 国产欧美日韩精品a在线观看| 日韩视频在线观看一区| 精品视频久久久久久| 久一区二区三区| 91丨porny丨最新| 欧美成人dvd在线视频| 加勒比海盗1在线观看免费国语版| 欧美久久一区| 中文字幕人妻一区二区三区视频| 一区二区91美女张开腿让人桶| 四虎成人精品免费影院| 国产精品系列视频| 成人小视频在线观看| 99久久er热在这里只有精品15| 116极品美女午夜一级| 亚洲草草视频| 毛片基地网站| 黄色aa久久| 国产成人久久精品一区二区三区| 中文字幕66页| 日韩视频永久免费观看| 国产一区二区在线免费| 中文字幕在线观看二区| 神马精品久久| 鲁一鲁一鲁一鲁一澡| 中文字幕日韩在线播放| 91网站最新网址| 亚洲美女在线一区| 日韩av中文在线| 国产在线播放一区| 美女被人操视频在线观看| 精品免费视频一卡2卡三卡4卡不卡| 天美星空大象mv在线观看视频| 精品人伦一区二区三区蜜桃免费| 天堂资源在线观看| 999精品视频在线观看播放| 六月丁香婷婷综合| 台湾亚洲精品一区二区tv| 99热这里只有精品9| 在线精品视频免费播放| 免费成人你懂的| 亚洲色图欧美日韩| 欧美精品导航| 大陆一级毛片免费观看| 午夜视频精品| 欧美变态另类刺激| 无码人妻久久一区二区三区| 国产超碰在线播放| 原创国产精品91| 草莓视频丝瓜在线观看丝瓜18| 四虎成人精品在永久免费| 少妇激情一区二区三区视频| 最新国产精品久久久| 天堂а√在线中文在线| www.亚洲欧美| 三级av免费观看| 亚洲电影在线一区二区三区| 女女同性女同一区二区三区91| 久久婷婷一区二区| 亚洲六月丁香色婷婷综合久久| 日韩精品中文字幕在线不卡尤物| 亚洲国产一区二区三区网站| 国产伦理一区| 久操视频在线免费播放| 日日摸天天爽天天爽视频| 欧美黄色影院| jizz在线播放| 成人国产精品| 亚洲成人自拍| av不卡一区| 无码粉嫩虎白一线天在线观看| 情se视频网在线观看| 乳色吐息在线观看| 丁香婷婷久久久综合精品国产| 国产精品对白刺激| 成人网在线免费观看| 在线免费观看黄色av| 亚洲精品一区二区三区网址| 国产高潮流白浆喷水视频| 欧美一级xxxx| caoporn视频在线| 日日摸夜夜添夜夜添精品视频| 国产伦精品一区二区三区精品视频| 91文字幕巨乱亚洲香蕉| 东凛在线观看| 日本高清在线观看wwwww色| 欧美在线免费| 日本美女一区二区三区视频| 中文字幕人妻互换av久久| 九九热视频这里只有精品| 成人免费一区二区三区| 欧美大成色www永久网站婷| 亚洲久草视频| 高清电影在线免费观看| 全彩无遮挡全彩口工漫画h#| 国产免费av网站| 伊人精品一区| 亚洲欧美一区二区精品久久久| 色姑娘资源站| 免费在线一区观看| 亚洲av无码乱码在线观看性色| 99国产视频在线| 久久国产精品国产精品| 狂野欧美性猛交xxxxx视频| 亚洲高清在线视频| 黄色片中文字幕| 日本欧洲一区| 日韩精品在线免费看| eeuss影影院www在线播放| 日韩精品电影一区二区三区| 色噜噜夜夜夜综合网| 日韩欧美激情视频| 日韩乱码在线观看| 欧美熟妇交换久久久久久分类| avav成人| 全部免费毛片在线播放一个| 九七午夜视频| 不用播放器成人网| 天堂√中文最新版在线| 亚洲不卡的av| 中文字幕在线播放不卡| 精品一区二区三区中文字幕在线| 日韩大片欧美大片| 久久夜色精品国产噜噜亚洲av| 日本一区二区三区中文字幕| eeuss影院在线观看第一页| 亚洲精品高清国产一线久久| 国产日韩在线看片| 香蕉成人app| 国产jizz18女人高潮| 欧美午夜激情视频| 国产欧美熟妇另类久久久| 久久91麻豆精品一区| 国产精品日韩欧美综合| 国产精品一区二区久久久久| 范冰冰一级做a爰片久久毛片| 日韩和欧美一区二区| 97av在线视频免费播放| 国产aaaaaaaaa| 精品一区二区三区人妻| 国内老熟妇对白hdxxxx| www.豆豆成人网.com| 欧美一级欧美三级在线观看| 久久一区二区中文字幕| 亚洲欧洲色图综合| 亚洲国产综合91精品麻豆| 麻豆传媒网站在线观看| 亚洲欧美成人一区二区三区| 亚洲国产精品一区二区三区| www.浪潮av.com| 日韩av一二三| 野花国产精品入口| 夜夜骑天天干| 亚洲精品乱码久久久久久蜜桃欧美| 日本无删减在线| 亚洲区国产区| 中文字幕高清在线观看| 不卡伊人av在线播放| 茄子视频成人在线| 韩国日本一区| 蜜乳av中文字幕| 午夜男人视频在线观看| 欧美唯美清纯偷拍| 2012中文字幕在线视频| 久久99在线观看| 欧美视频在线观看 亚洲欧| 日本午夜精品视频在线观看| 日本a级片在线观看| www成人免费观看| 国产人妻黑人一区二区三区| 亚洲精品手机在线| 亚洲三级电影全部在线观看高清| 精品午夜久久| 国产亚洲精品一区二555| 精品一区91| 国产精品日韩无码| 捆绑调教一区二区三区| 色网在线免费观看| 欧美成人精品一区二区男人看| 久久久久久久久久久久网站| 国产成人精品日本亚洲专区61| 欧美黄色片免费观看| 国产精品久久久久久户外露出| 向日葵视频成人app网址| 国产精品视频一区二区三区不卡| 免费国产阿v视频在线观看| 19j韩国主播韩宝贝在线| 欧美综合在线观看视频| 亚洲理论在线a中文字幕| 国产精品精品国产| 丰满的护士2在线观看高清| 国产91丝袜在线播放0| 精品一区二区不卡| 最新天堂资源在线| 欧美日韩国产高清一区二区| 欧美18一12sex性处hd| 国产精自产拍久久久久久蜜| 国内精品写真在线观看| 亚洲污视频在线观看| 久久免费小视频| 成人精品久久一区二区三区| 亚洲精选一区二区| 天堂在线免费av| 男人天堂2017| 少妇一区二区三区| 欧美一区二区私人影院日本| 三级网站视频在在线播放| 亚洲日本japanese丝袜| 日韩国产欧美在线观看| 国语对白精品一区二区| 一本色道无码道dvd在线观看| 老司机午夜精品视频在线观看| 97久久精品人人澡人人爽缅北| 国产精品无码白浆高潮| 欧美日韩亚洲网| 久久精品国产一区二区三| 免费观看一级特黄欧美大片| 日韩一区在线免费观看| eeuss草民免费| 91电影在线播放| 麻豆亚洲av成人无码久久精品| 日韩激情综合网| 亚洲区欧美区| 欧美伦理片在线观看| 成人看片黄a免费看视频| 亚洲制服在线观看| 国产黄色片中文字幕| 亚洲人在线视频| 天天射天天爱天天射干| 国语一区二区三区| 黄色软件视频在线观看|