久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ADO

發布時間:2025/4/16 编程问答 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ADO 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

1 基礎????1

1.1 引入ADO庫文件????1

1.1.1 版本????1

1.2 初始化OLE/COM庫環境????2

1.3 comdef.h????2

1.3.1 字符串編碼轉換????2

1.3.2 重要的類????3

1.3.3 重要的變量????4

1.3.4 智能指針????4

2 _ConnectionPtr????5

2.1 連接數據庫????5

2.2 執行SQL語句????5

2.3 事務處理????6

2.4 斷開連接????7

3 _RecordsetPtr????8

3.1 打開記錄集????8

3.1.1 CursorLocation????9

3.1.2 CursorType????9

3.1.3 LockType????10

3.2 遍歷記錄集????11

3.3 關閉記錄集????12

3.4 訪問BLOB????12

3.4.1 寫入????12

3.4.2 讀取????14

3.4.3 更新????15

3.5 書簽????15

3.6 過濾????16

3.7 Find????16

3.8 Sort????17

3.9 Index????17

3.10 綁定數據????18

3.10.1 CADORecordBinding派生類????18

3.10.2 綁定????20

3.10.3 讀取字段????20

3.10.4 添加新記錄????21

4 _CommandPtr????23

4.1 執行SQL語句????23

4.1.1 無名參數????23

4.1.2 有名參數????23

4.2 修改BLOB????24

4.3 執行存儲過程????24

4.3.1 無名參數????25

4.3.2 有名參數????26

4.3.3 Refresh????27

4.3.4 游標位置????27

4.4 重復使用命令對象????28

5 ADOX????29

5.1 引入庫文件????29

5.1.1 一個BUG????29

5.2 創建數據庫????30

5.3 創建數據表????30

6 JRO????31

6.1 VB6.0????31

6.1.1 引用????31

6.1.2 代碼????31

6.2 VC++????32

6.2.1 引入????32

6.2.2 代碼????32

7 常見問題????33

7.1 連接失敗的原因????33

7.2 改變當前數據庫????33

7.3 判斷某個數據庫是否存在????33

7.4 判斷某個表是否存在????34

7.5 ADO鎖定整張表????34

7.6 獲取記錄集行數????35

7.7 解決并發沖突????35

?

?

1 基礎

1.1 引入ADO庫文件

VC++使用ADO,首先需要導入ADO的類型庫。可以在StdAfx.h里增加如下代碼:

#import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename("EOF","adoEOF")

no_namespace表示不需要命名空間。刪除這個詞,則ADO的接口函數將被放在ADODB命名空間內。也可以用rename_namespace("ADO")將命名空間更改為ADO

rename("EOF","adoEOF")表示將EOF更改為adoEOF。因為EOF在某些文件里被定義為(-1),如此一來,VARIANT_BOOL EOF;就變成了VARIANT_BOOL (-1);把它當做類成員變量編譯時就會出錯。

VC++編譯器中的預處理器針對這條指令做了哪些工作呢?

1、根據msado15.dll里的類型庫信息生成COM組件的接口文件。具體的就是生成msado15.tlhmsado15.tli,前者是聲明文件,后者是實現文件;

2、替換#import語句為#include "msado15.tlh"。這樣,源文件里就可以使用COM組件的接口了;

3msado15.tliCOM接口的實現文件,如果沒有它則程序可以編譯但無法連接。不過,msado15.tlimsado15.tlh包含起來了(通過#pragma start_map_region#include),且它的函數全部為內聯的。因此,不用再單獨編譯msado15.tli

1.1.1 版本

Windows7 sp1里的msado15.dll,其類型庫版本為 6.1,而Windows XPmsado15.dll的版本為2.x。最關鍵的是新版本的類型庫并不是向下兼容的!

如果在Windows7下編譯代碼,然后在Windows XP下運行,就有可能會出現問題。解決方法有兩個:

1#import "msado15.dll"中的msado15.dll請使用低版本的,即Windows XP里的msado15.dll

2、升級Windows XP里的ADO組件。

1.2 初始化OLE/COM庫環境

ADO是一組COM動態庫,所以使用ADO前,必須初始化OLE/COM庫。在MFC應用程序里,一個比較好的方法是在應用程序主類的InitInstance成員函數里初始化OLE/COM庫。

BOOL CMyAdoTestApp::InitInstance()

{

AfxOleInit();????//這就是初始化COM

……

}

也可以使用 CoInitializeCoInitializeExOleInitialize初始化COM庫,退出程序前請使用CoUninitializeOleUninitialize

1.3 comdef.h

msado15.tlh文件里,語句#include <comdef.h>包含了comdef.h頭文件,這個頭文件里又有如下語句:

... ... ...

#include <comutil.h>

... ... ...

#pragma comment(lib, "comsupp.lib")

comdef.hcomutil.hcomsupp.lib包含了一些重要的變量、函數、類。

1.3.1 字符串編碼轉換

comutil.h頭文件里有兩個函數可用于字符串的編碼轉換:

namespace _com_util

{

BSTR __stdcall ConvertStringToBSTR(const char*pSrc);

char* __stdcall ConvertBSTRToString(BSTR pSrc);

}

_com_util::ConvertStringToBSTRAnsi字符串轉換為Unicode字符串,返回值記得要調用SysFreeString釋放內存;

_com_util::ConvertBSTRToString Unicode字符串轉換為Ansi字符串,返回值記得要調用 delete[] 釋放內存;

這兩個函數的實現代碼在comsupp.lib里。

1.3.2 重要的類

comutil.hcomdef.h這兩個頭文件里,有三個重要的類:_bstr_t_variant_t_com_error

_bstr_t 封裝了BSTR_variant_t封裝了VARIANT_com_error封裝了COM錯誤。

使用_bstr_t_variant_t可以極大的簡化代碼。以下面的代碼進行說明:

_RecordsetPtr m_pRecordset;

... ... ...

_variant_t vAge = m_pRecordset->GetCollect(_T("Age"));

上面的代碼用來讀取字段Age。查看msado15.tli里的Recordset15::GetCollect函數,可以知道COM組件返回的其實是一個VARIANTGetCollect函數返回前創建了一個臨時_variant_t對象,將VARIANT封裝了起來并返回給vAge

vAge析構時將調用VariantClear銷毀COM組件返回的VARIANT。如果Age字段是一個BSTR字符串,VariantClear會調用SysFreeString釋放BSTR字符串。

如果不借助_variant_t,而直接使用VARIANT,會是什么情況呢?那就是必須顯式的調用VariantClear函數,銷毀COM組件返回的每一個VARIANT。這樣代碼就會顯得非常臃腫,而且一旦疏忽就會發生內存泄露。

此外,使用_bstr_t也會相當的方便。

如:代碼_bstr_t s(m_pRecordset->GetCollect(_T("Age")));會自動將GetCollect返回的_variant_t轉換為BSTR字符串。

如:可以使用Ansi字符串構造_bstr_t對象

_bstr_t s1("測試_bstr_t");

如:可以使用Unicode字符串構造_bstr_t對象

_bstr_t s2(L"測試_bstr_t");

如:可以將Ansi字符串或Unicode字符串賦給_bstr_t變量

s1 = "_bstr_t測試";

s2 = L"_bstr_t測試";

如:可以輕松獲得Ansi字符串或Unicode字符串

const char*????????sA????=????(const char*)s1;????????????//返回Ansi字符串

const wchar_t*????sW????=????(const wchar_t*)s1;????????//返回Unicode字符串

需要注意的是:上面的sAsW所指向的內存由_bstr_t維護。_bstr_t對象s1析構時,sAsW也就成為了野指針。

1.3.3 重要的變量

comutil.h里,有全局變量vtMissing,其定義如下:

extern _variant_t vtMissing;

它其實是類型為VT_EMPTYVARIANT

1.3.4 智能指針

_COM_SMARTPTR_TYPEDEF用來聲明智能指針。

如:智能指針_ConnectionPtr的聲明如下:

_COM_SMARTPTR_TYPEDEF(_Connection, __uuidof(_Connection));

宏展開之后,其實就是:

typedef _com_ptr_t< _com_IIID<_Connection, &__uuidof(_Connection)> > _ConnectionPtr;

_ConnectionPtr的實質就是一個自動維護COM計數的_Connection

?

2 _ConnectionPtr

_ConnectionPtr表示與數據庫的連接。

2.1 連接數據庫

下面的代碼將實例化一個_ConnectionPtr,并連接數據庫

HRESULT hr = S_OK;

_ConnectionPtr m_pConnection;

{//創建連接

try

{

//創建 COM 對象,__uuidof(Connection) 可以替換為 "ADODB.Connection"

hr = m_pConnection.CreateInstance(__uuidof(Connection));

if(SUCCEEDED(hr))

{//連接 Access 數據庫 Demo.mdb

m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Demo.mdb"

,"","",adModeUnknown);

}

}

catch(_com_error& e)

{

AfxMessageBox(e.Description());

}

}?

m_pConnection->Open用來連接數據庫。第一個參數用來指定連接字符串;第二、三個參數分別為用戶名和密碼;第四個參數是enum ConnectModeEnum,對數據庫的讀寫進行控制,如:adModeRead表示只讀……

2.2 執行SQL語句

Execute方法將執行SQL語句,其聲明如下:

_RecordsetPtr Connection15::Execute(_bstr_t CommandText

????????????????????????,VARIANT*RecordsAffected

????????????????????????,long Options);

CommandText????????是命令字串,通常是SQL命令

RecordsAffected????是操作完成后所影響的行數

Options????????????????表示CommandText的類型,取值如下

????????????????????adCmdText????????????表明CommandText是文本

????????????????????adCmdTable????????????表明CommandText是表名

????????????????????adCmdProc????????????表明CommandText是存儲過程

????????????????????adCmdUnknown????????未知

Execute執行完后返回一個記錄集。

示例代碼如下:

_variant_t RecordsAffected;

//執行SQL命令,創建表格

m_pConnection->Execute("CREATE TABLE users(ID INTEGER,username TEXT,old INTEGER,birthday DATETIME)",&RecordsAffected,adCmdText);

//往表格里面添加記錄

m_pConnection->Execute("INSERT INTO users(ID,username,old,birthday) VALUES (1, ''''Washington'''',25,''''1970/1/1'''')",&RecordsAffected,adCmdText);

//將所有記錄old字段的值加一

m_pConnection->Execute("UPDATE users SET old = old + 1"

,&RecordsAffected,adCmdText);

//執行SQL統計命令得到包含記錄條數的記錄集

m_pRecordset = m_pConnection->Execute("SELECT COUNT(*) FROM users"

,&RecordsAffected,adCmdText);

//取得第一個字段的值放入vCount變量

_variant_t vCount = m_pRecordset->GetCollect((_variant_t)((long)0));

m_pRecordset->Close();//關閉記錄集

CString message;

message.Format("共有%d條記錄",vCount.lVal);

AfxMessageBox(message);///顯示當前記錄條數

2.3 事務處理

ADO中的事務處理也很簡單,只需分別在適當的位置調用Connection對象的三個方法即可,這三個方法是:

1、在事務開始時調用

pCnn->BeginTrans();

2、在事務結束并成功時調用

pCnn->CommitTrans();

3、在事務結束并失敗時調用

pCnn->RollbackTrans();

在使用事務處理時,應盡量減小事務的范圍,即減小從事務開始到結束(提交或回滾)之間的時間間隔,以便提高系統效率。需要時也可在調用BeginTrans()方法之前,先設置Connection對象的IsolationLevel屬性值,詳細內容參見MSDN中有關ADO的技術資料。

2.4 斷開連接

下面的代碼將斷開與數據庫的連接,并銷毀_ConnectionPtr實例

if(m_pConnection)

{//關閉ADO連接

if(m_pConnection->State)

{

m_pConnection->Close();

}

//下面的語句可有可無。因為m_pConnection是智能指針,析構時會自動Release

m_pConnection.Release();

}

?

3 _RecordsetPtr

_RecordsetPtr表示記錄集。

3.1 打開記錄集

使用Open方法打開記錄集,其聲明如下:

HRESULT Recordset15::Open(const _variant_t& Source

????????????????????????????,const _variant_t & ActiveConnection

????????????????????????????,enum CursorTypeEnum CursorType

????????????????????????????,enum LockTypeEnum LockType

????????????????????????????,long Options);

Source????????????????數據查詢字符串

ActiveConnection????_Connection*或連接數據庫的字符串

CursorType????????????光標類型

LockType????????????鎖定類型

Options????????????????可以取如下值之一:

????????????????????adCmdText????????????表明CommandText是文本命令

????????????????????adCmdTable????????????表明CommandText是表名

????????????????????adCmdProc????????????表明CommandText是存儲過程

????????????????????adCmdUnknown????????未知

下面的代碼首先實例化一個_RecordsetPtr,然后在_ConnectionPtr的基礎上,打開一個記錄集。注意Open函數的第二個參數,表示數據庫連接。

_RecordsetPtr m_pRecordset;

try

{

//創建 COM 對象,__uuidof(Recordset) 可以替換為 "ADODB.Recordset"

hr = m_pRecordset.CreateInstance(__uuidof(Recordset));

if(SUCCEEDED(hr))

{

m_pRecordset->CursorLocation = adUseClient;

m_pRecordset->Open(_T("SELECT * FROM DemoTable")

,m_pConnection.GetInterfacePtr()

,adOpenDynamic

,adLockOptimistic //樂觀鎖

,adCmdText);

}

}

catch(_com_error& e)

{

AfxMessageBox(e.Description());

}

可以將Open函數的第二個參數更換為連接字符串,如:"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Demo.mdb"。在此情況下,Open函數首先連接數據庫,然后再打開一個記錄集。

3.1.1 CursorLocation

CursorLocation表示游標的位置,有兩個選項:

adUseServer????=????2????//默認,表示游標在服務端

adUseClient????????=????3????//表示游標在客戶端

游標在服務端,則記錄集對數據變化是敏感的。亦即當其它用戶修改了數據庫內的數據后,有可能會影響到客戶端已經打開的記錄集。游標在客戶端,就不會有數據敏感性了。

游標在服務端,則客戶端打開記錄集時數據將保留在服務端,不會通過網絡傳給客戶端。但是訪問記錄集里的數據時,就會頻繁的網絡通訊。游標在客戶端,則客戶端打開記錄集時數據將通過網絡緩存到客戶端。訪問記錄集里的數據時,將不再需要網絡通訊。因此,如果頻繁的訪問數據則客戶端游標的性能較高。

此外,服務端游標不支持書簽而客戶端游標支持書簽。這將影響到某些函數的使用,如:GetRecordCount函數有可能返回-1,而不是實際的記錄個數。

3.1.2 CursorType

游標類型有四種:

adOpenForwardOnly????????=????0,????//向前游標

adOpenKeyset????????????=????1,????//鍵集游標

adOpenDynamic????????=????2,????//動態游標

adOpenStatic????????????=????3????//靜態游標

adOpenForwardOnlyadOpenStatic 表示記錄集是靜態的:打開記錄集后,它就不會再發生變化,即使其他用戶修改了數據庫里的數據。兩者的區別在于adOpenForwardOnly只能向前移動游標,而adOpenStatic可以任意移動游標。

adOpenKeysetadOpenDynamic 表示記錄集是動態的:打開記錄集后,能夠反映其他用戶所做的修改。

adOpenKeyset 的實現原理:打開的記錄集僅僅保存記錄的關鍵字(Key),訪問某條記錄時是根據 Key 到數據庫訪問的。所以,其他用戶修改了某條記錄后,再訪問這條記錄,是能夠發現記錄改變了。但是,其他用戶如果增加、刪除記錄,并不會更改關鍵字記錄集,因此通過關鍵字記錄集,無法及時獲知增加、刪除的記錄。

adOpenDynamic 的實現原理:打開的記錄集會根據數據庫內容的變化及時予以更新。但是需要注意CursorLocation 必須等于 adUseServer,即游標必須在服務端才能實現此功能。

3.1.3 LockType

adLockReadOnly????????=????1,????????//只讀

adLockPessimistic????????=????2, ????????//悲觀鎖

adLockOptimistic????????=????3, ????????//樂觀鎖

adLockBatchOptimistic????=????4 ????????//批量樂觀鎖

悲觀鎖要求CursorLocation = adUseServer。它表示:編輯字段時就鎖定記錄,Update之后停止鎖定。這種方法最保險,但是效率最低;

樂觀鎖只有在 Update 時才鎖定記錄,更新完畢后停止鎖定。也就是說,每調用一次Update,都會鎖定、解鎖一次;

批量樂觀鎖表示調用UpdateBatch時鎖定記錄,批量更新完畢后停止鎖定。也就是說,每調用一次UpdateBatch,都會鎖定、解鎖一次。

假定使用悲觀鎖,多用戶執行下面三行代碼,會發生什么情況呢?

m_pRecordset->MoveFirst();

m_pRecordset->PutCollect("name","Test");

m_pRecordset->Update();

用戶A執行到m_pRecordset->PutCollect,將鎖定記錄集的第一行。其它用戶運行到m_pRecordset->PutCollect時,也想鎖定第一行,但因為已經被A鎖定,所以其它用戶執行到此行時會等待若干時間后拋出異常。

用戶A執行完m_pRecordset->Update后,將解鎖記錄集的第一行。注意:具體何時解鎖,每種數據庫好像不盡相同。經筆者測試,發現Access2000Update后即解鎖,而SQL Server2008在記錄集關閉后才解鎖。

3.2 遍歷記錄集

如下代碼將遍歷記錄集。

_variant_t var;

CString sName,sAge;

try

{

//如果 BOF EOF 均為真,則無記錄

if(!m_pRecordset->BOF || !m_pRecordset->adoEOF)

{

m_pRecordset->MoveFirst();

while(!m_pRecordset->adoEOF)

{

var = m_pRecordset->GetCollect(_T("Name"));

if(var.vt != VT_NULL)

{//姓名

sName = (LPCTSTR)_bstr_t(var);

}

else

{

sName.Empty();

}

var = m_pRecordset->GetCollect(_T("Age"));

if(var.vt != VT_NULL)

{//年齡

sAge = (LPCTSTR)_bstr_t(var);

}

else

{

sAge.Empty();

}

m_pRecordset->MoveNext();

}

}

}

catch(_com_error& e)

{

AfxMessageBox(e.Description());

}

var = m_pRecordset->GetCollect(_T("Name"));的等價代碼如下:

FieldsPtr????pFields????=????m_pRecordset->Fields;

FieldPtr????????pField????=????pFields->Item[_T("Name")];

var????????????????????=????pField->Value;

3.3 關閉記錄集

下面的代碼將關閉記錄集,并銷毀_RecordsetPtr實例。

if(m_pRecordset)

{//關閉記錄集

if(m_pRecordset->State)

{

m_pRecordset->Close();

}

//下面的語句可有可無。因為m_pRecordset是智能指針,析構時會自動Release

m_pRecordset.Release();

}

3.4 訪問BLOB

Microsoft SQL中,textimage……被當做二進制數據進行處理。

可以用Field對象的GetChunkAppendChunk方法來訪問。每次可以讀出或寫入全部數據的一部分,它會記住上次訪問的位置。但是如果中間訪問了別的字段后,就又得從頭來了。

3.4.1 寫入

可以使用m_pRecordset->PutCollect("data",varBLOB)將二進制數據一次性寫入,也可以使用AppendChunk分多次寫入二進制數據。

void CDlgMain::blobFileToDB(LPCTSTR szFile)

{

CFile f;

if(f.Open(szFile,CFile::modeRead | CFile::shareDenyWrite))

{

FieldPtr fd = m_pRecordset->Fields->Item["data"];

DWORD dwSize = f.GetLength();

if(dwSize > 0)

{

const int????????????nBlock????????= 1024;

DWORD????dwWrite????????= 0; //已經寫入數據庫的字節數

DWORD????????????dwAppend????= 0; //單次寫入的字節數

UINT????????????????uRead????????= 0;

SAFEARRAY*????psa????????= SafeArrayCreateVector(VT_UI1,0,nBlock);

_variant_t????????????vBLOB;

vBLOB.vt????????????=????VT_ARRAY | VT_UI1;

vBLOB.parray????????=????psa;

?

for(;;)

{

dwAppend = dwSize - dwWrite;

if(!dwAppend)

{

break;

}

if(dwAppend > nBlock)

{

dwAppend = nBlock;

}

SafeArrayLock(psa);

uRead = f.Read(psa->pvData,dwAppend);

SafeArrayUnlock(psa);

if(uRead != dwAppend)

{

break;

}

psa->rgsabound[0].cElements = dwAppend;

fd->AppendChunk(vBLOB);

dwWrite += dwAppend;

}

//SafeArrayDestroy(psa); //vBLOB析構時會自動釋放數組 psa

}

else

{

_variant_t vNull;

vNull.vt = VT_NULL;

fd->PutValue(vNull);

}

f.Close();

}

}

代碼fd->PutValue(vNull);相當于m_pRecordset->PutCollect("data",vNull)用來設置BLOBNULL,也就是清空。也可以使用SQL語句清空某個BLOB字段,如:

UPDATE 表名 SET BLOB字段名 = NULL WHERE ID=1

3.4.2 讀取

可以使用m_pRecordset-> GetCollect("data")將二進制數據一次性讀取出來,也可以使用GetChunk分多次讀取二進制數據。

void CDlgMain::blobDBtoFile(LPCTSTR szFile)

{

CFile f;

if(f.Open(szFile,CFile::modeWrite | CFile::modeCreate))

{

FieldPtr????fd????????????=????m_pRecordset->Fields->Item["data"];

long????????nSizeActual????=????fd->ActualSize;

if(nSizeActual > 0)

{

const int????????????nBlock????=????1024;

long????????????????nRead????=????0; ????//已經讀取的字節數

long????????????????nGet????=????0; ????//單次讀取的字節數

_variant_t????????????vBLOB;

ULONG????????????uWrite????=????0; ????//單次寫入文件的字節數

SAFEARRAY*????psa;

?

for(;;)

{

nGet = nSizeActual - nRead;

if(!nGet)

{

break;

}

if(nGet > nBlock)

{

nGet = nBlock;

}

vBLOB = fd->GetChunk(nGet);

nRead += nGet;

if(vBLOB.vt == (VT_ARRAY | VT_UI1)

&& (psa = vBLOB.parray) && psa->cDims == 1)

{

uWrite = psa->rgsabound[0].cElements;

if(uWrite)

{

SafeArrayLock(psa);

f.Write(psa->pvData,uWrite);

SafeArrayUnlock(psa);

}

}

}

}

f.Close();

}

}

3.4.3 更新

通過_CommandPtr,執行帶參數的SQL語句,可實現BLOB數據的修改。請參考_CommandPtr這一章。

3.5 書簽

書簽(bookmark)可以唯一標識記錄集中的一個記錄,用于快速地將當前記錄移回到已訪問過的記錄,以及進行過濾等等。Provider會自動為記錄集中的每一條記錄產生一個書簽,我們只需要使用它就行了。我們不能試圖顯示、修改或比較書簽。ADO用記錄集的Bookmark屬性表示當前記錄的書簽。

用法步驟:

rst->Supports(adBookmark);????????????//判斷是否支持書簽

_variant_t VarBookmark;????????????//建立書簽變量

VarBookmark = rst->Bookmark;????????//獲得書簽值

... ... ...????????????????????????//可以移動記錄

if(VarBookmark.vt != VT_EMPTY)

{//將記錄位置恢復到書簽位置

rst->Bookmark = VarBookmark;

}

3.6 過濾

Recordset對象的Filter屬性表示了當前的過濾條件。它的值可以是以ANDOR連接起來的條件表達式(不含WHERE關鍵字)、由書簽組成的數組或ADO提供的FilterGroupEnum枚舉值。為Filter屬性設置新值后Recordset的當前記錄指針會自動移動到滿足過濾條件的第一個記錄。例如:

rst->Filter = _bstr_t ("姓名='趙薇' AND 性別='女'");

在使用條件表達式時應注意下列問題:

1、可以用圓括號組成復雜的表達式

例如:

rst->Filter = _bstr_t ("(姓名='趙薇' AND 性別='女') OR AGE<25");

但是微軟不允許在括號內用OR,然后在括號外用AND,例如:

rst->Filter = _bstr_t ("(姓名='趙薇' OR 性別='女') AND AGE<25");

必須修改為:

rst->Filter = _bstr_t ("(姓名='趙薇' AND AGE<25) OR (性別='女' AND AGE<25)");

2、表達式中的比較運算符可以是LIKE

LIKE后被比較的是一個含有通配符*的字符串,星號表示若干個任意的字符。

字符串的首部和尾部可以同時帶星號*

rst->Filter = _bstr_t ("姓名 LIKE '**' ");

也可以只是尾部帶星號:

rst->Filter = _bstr_t ("姓名 LIKE '*' ");

Filter屬性值的類型是Variant,如果過濾條件是由書簽組成的數組,則需將該數組轉換為SafeArray,然后再封裝到一個VARIANT_variant_t型的變量中,再賦給Filter屬性。

3.7 Find

以下代碼用于查找記錄

pRst->Find("姓名 = '趙薇'",1,adSearchForward);

一般情況下,這種查找是順序查找,效率較低。可針對某個字段進行排序,其方法如下:

//將該字段的Optimize屬性設置為True

pRst->Fields->GetItem("姓名")->Properties->

GetItem("Optimize")->PutValue("True");

... ... ...

pRst->Find("姓名 = '趙薇'",1,adSearchForward);

... ... ...

//將該字段的Optimize屬性設置為False

pRst->Fields->GetItem("姓名")->Properties->

GetItem("Optimize")->PutValue("False");

3.8 Sort

要排序也很簡單,只要把要排序的關鍵字列表設置到Recordset對象的Sort屬性里即可,例如:

pRstAuthors->CursorLocation = adUseClient;

pRstAuthors->Open("SELECT * FROM mytable"

????????????????????,_variant_t((IDispatch *)pConnection)

????????????????????,adOpenStatic,adLockReadOnly, adCmdText);

......

pRst->Sort = "姓名 DESC, 年齡 ASC";

關鍵字(即字段名)之間用逗號隔開,如果要以某關鍵字降序排序,則應在該關鍵字后加一空格,再加DESC(如上例)。升序時ASC加不加無所謂。本操作是利用索引進行的,并未進行物理排序,所以效率較高。

但要注意,在打開記錄集之前必須將記錄集的CursorLocation屬性設置為adUseClient,如上例所示。Sort屬性值在需要時隨時可以修改。

3.9 Index

pRst->Index="";????????????//首先設置索引(數據庫里建立的索引)

pRst->Seek(...,...);????????//有序查找

3.10 綁定數據

定義一個綁定類,將其成員變量綁定到一個指定的記錄集,以方便于訪問記錄集的字段值。

3.10.1 CADORecordBinding派生類

class CCustomRs : public CADORecordBinding

{

BEGIN_ADO_BINDING(CCustomRs)

ADO_VARIABLE_LENGTH_ENTRY2(3

????????????????????????????????????????????,adVarChar

????????????????????????????????????????????,m_szau_fname

????????????????????????????????????????????,sizeof(m_szau_fname)

????????????????????????????????????????????,lau_fnameStatus

????????????????????????????????????????????,false)

ADO_VARIABLE_LENGTH_ENTRY2(2

????????????????????????????????????????????,adVarChar

????????????????????????????????????????????,m_szau_lname

????????????????????????????????????????????,sizeof(m_szau_lname)

????????????????????????????????????????????,lau_lnameStatus

????????????????????????????????????????????,false)

ADO_VARIABLE_LENGTH_ENTRY2(4

????????????????????????????????????????????,adVarChar

????????????????????????????????????????????,m_szphone

????????????????????????????????????????????,sizeof(m_szphone)

????????????????????????????????????????????,lphoneStatus

????????????????????????????????????????????,true)

END_ADO_BINDING()

public:

CHAR m_szau_fname[22];

ULONG lau_fnameStatus;

CHAR m_szau_lname[42];

ULONG lau_lnameStatus;

CHAR m_szphone[14];

ULONG lphoneStatus;

};

其中將要綁定的字段與變量名用BEGIN_ADO_BINDING宏關聯起來。每個字段對應于兩個變量,一個存放字段的值,另一個存放字段的狀態。字段用從1開始的序號表示,如123等等。

特別要注意的是:如果要綁定的字段是字符串類型,則對應的字符數組的元素個數一定要比字段長度大2(比如m_szau_fname[22],其綁定的字段au_fname的長度實際是20),不這樣綁定就會失敗。我分析多出的2可能是為了存放字符串結尾的空字符nullBSTR字符串開頭的一個字(表示BSTR的長度)。這個問題對于初學者來說可能是一個意想不到的問題。

CADORecordBinding類的定義在icrsint.h文件里,內容是:

class CADORecordBinding

{

public:

STDMETHOD_(const ADO_BINDING_ENTRY*, GetADOBindingEntries) (VOID) PURE;

};

BEGIN_ADO_BINDING宏的定義也在icrsint.h文件里,內容是:

#define BEGIN_ADO_BINDING(cls) public: /

typedef cls ADORowClass; /

const ADO_BINDING_ENTRY* STDMETHODCALLTYPE GetADOBindingEntries() { /

static const ADO_BINDING_ENTRY rgADOBindingEntries[] = {

ADO_VARIABLE_LENGTH_ENTRY2宏的定義也在icrsint.h文件里:

#define ADO_VARIABLE_LENGTH_ENTRY2(Ordinal, DataType, Buffer, Size, Status, Modify)/

{Ordinal, /

DataType, /

0, /

0, /

Size, /

offsetof(ADORowClass, Buffer), /

offsetof(ADORowClass, Status), /

0, /

classoffset(CADORecordBinding, ADORowClass), /

Modify},

#define END_ADO_BINDING宏的定義也在icrsint.h文件里:

#define END_ADO_BINDING() {0, adEmpty, 0, 0, 0, 0, 0, 0, 0, FALSE}};/

return rgADOBindingEntries;}

3.10.2 綁定

_RecordsetPtr Rs1;

IADORecordBinding *picRs=NULL;

CCustomRs rs;

......

Rs1->QueryInterface(__uuidof(IADORecordBinding),(LPVOID*) picRs);

picRs->BindToRecordset(&rs);

派生出的類必須通過IADORecordBinding接口才能綁定,調用它的BindToRecordset方法就行了。

3.10.3 讀取字段

rs中的變量即是當前記錄字段的值

//Set sort and filter condition:

// Step 4: Manipulate the data

Rs1->Fields->GetItem("au_lname")->Properties->

GetItem("Optimize")->Value = true;

Rs1->Sort = "au_lname ASC";

Rs1->Filter = "phone LIKE '415 5*'";

Rs1->MoveFirst();

while (VARIANT_FALSE == Rs1->EndOfFile)

{

printf("Name: %s/t %s/tPhone: %s/n"

,(rs.lau_fnameStatus == adFldOK ? rs.m_szau_fname : "")

,(rs.lau_lnameStatus == adFldOK ? rs.m_szau_lname : "")

,(rs.lphoneStatus == adFldOK ? rs.m_szphone : ""));

if (rs.lphoneStatus == adFldOK)

strcpy(rs.m_szphone, "777");

TESTHR(picRs->Update( // Add change to the batch

Rs1->MoveNext();

}

Rs1->Filter = (long) adFilterNone;

......

if (picRs)

{

picRs->Release();

}

Rs1->Close();

pConn->Close();

只要字段的狀態是adFldOK,就可以訪問。如果修改了字段,不要忘了先調用picRsUpdate(注意不是RecordsetUpdate),然后才關閉,也不要忘了釋放picRs(即picRs->Release();)。

3.10.4 添加新記錄

此時還可以用IADORecordBinding接口添加新記錄

if(FAILED(picRs->AddNew(&rs)))

......

?

4 _CommandPtr

_CommandPtr用來執行SQL語句或調用存儲過程。

4.1 執行SQL語句

下面的代碼首先實例化一個_CommandPtr,然后執行一條SQL語句,執行返回的結果就是一個記錄集:

_CommandPtr cmd;

cmd.CreateInstance(__uuidof(Command));

cmd->ActiveConnection????=????theApp.m_pConnection;

cmd->CommandText????????=????"select * from file where name like '%.jpg'";

_RecordsetPtr????rs????????=????cmd->Execute(NULL,NULL,adCmdText);

_CommandPtr不僅僅能執行SQL語句,它還可以給SQL語句傳遞參數。

4.1.1 無名參數

下面的代碼中,SQL語句中的?號就是一個無名參數。執行SQL語句時,從左至右第一個?號將被cmd->Parameters->Item[0]->Value代替;第二個?號將被cmd->Parameters->Item[1]->Value代替……

所以,調用cmd->Execute執行SQL語句前,需要調用cmd->CreateParameter創建參數,并調用cmd->Parameters->Append將此參數添加至cmd->Parameters集合。

_CommandPtr cmd;

cmd.CreateInstance(__uuidof(Command));

cmd->ActiveConnection????=????theApp.m_pConnection;

cmd->CommandText????????=????"select * from file where name like ?";

cmd->Parameters->Append(

????????????????cmd->CreateParameter("",adChar,adParamInput,-1,"%.jpg"));

_RecordsetPtr????rs????????=????cmd->Execute(NULL,NULL,adCmdText);

4.1.2 有名參數

下面的代碼中,SQL語句中的@name就是一個有名參數。執行SQL語句時,@name將被cmd->Parameters->Item["@name"]->Value代替。

所以,調用cmd->Execute執行SQL語句前,需要調用cmd->CreateParameter創建有名參數,并調用cmd->Parameters->Append將此參數添加至cmd->Parameters集合。

_CommandPtr cmd;

cmd.CreateInstance(__uuidof(Command));

cmd->ActiveConnection????=????theApp.m_pConnection;

cmd->CommandText????????=????"select * from file where name like @name";

cmd->Parameters->Append(

????????????????cmd->CreateParameter("@name",adChar,adParamInput,-1,"%.jpg"));

_RecordsetPtr????rs????????=????cmd->Execute(NULL,NULL,adCmdText);

4.2 修改BLOB

通過_CommandPtr,執行帶參數的SQL語句,可實現BLOB數據的修改。

_variant_t vBLOB;

vBLOB.vt = VT_ARRAY | VT_UI1;

vBLOB.parray = SafeArrayCreateVector(VT_UI1,0,30);

SafeArrayLock(vBLOB.parray);

memset(vBLOB.parray->pvData,0,30);

SafeArrayUnlock(vBLOB.parray);

?

_CommandPtr cmd(__uuidof(Command));

cmd->ActiveConnection = theApp.m_pConnection;

cmd->CommandText = "UPDATE 表名 SET BLOB字段名=? WHERE ID='1'";

cmd->Parameters->Append(

cmd->CreateParameter("",adVarBinary,adParamInput,-1,vBLOB));

cmd->Execute(NULL,NULL,adCmdText);

4.3 執行存儲過程

SQL2008里,執行如下SQL語句,創建一個存儲過程:

if exists (select * from sysobjects where id = object_id(N'[sp_1]') and OBJECTPROPERTY(id, N'IsProcedure')= 1)

drop procedure sp_1

GO

?

CREATE PROCEDURE sp_1(@pin1 int

,@pin2 CHAR(10)

,@pout1 int OUTPUT

,@pout2 CHAR(10) OUTPUT)

AS

BEGIN

declare @retval int

select @pout1 = @pin1 + 100

select @pout2 = left( ltrim(rtrim(@pin2)) + '123' , 10)

select * from [file]

select @retval = 1236

return @retval

END

GO

?

exec sp_1 10,'Test',20,'789'

GO

使用_CommandPtr執行這個存儲過程,需要傳遞、接收的參數如下:

@RETURN_VALUE(int,返回值)????????????//0個參數,返回值

@pin1(int,輸入)????????????????????????????//1個參數

@pin2(char(10),輸入)????????????????????//2個參數

@pout1(int ,輸入/輸出)????????????????????//3個參數

@pout2(char(10),輸入/輸出)????????????????//4個參數

4.3.1 無名參數

不使用Refresh方法,執行存儲過程的代碼如下:

_CommandPtr cmd;

cmd.CreateInstance(__uuidof(Command));

cmd->ActiveConnection????=????theApp.m_pConnection;

cmd->CommandText????????=????"sp_1"; //存儲過程名稱

//添加參數——返回值

cmd->Parameters->Append(

????????????cmd->CreateParameter("",adInteger,adParamReturnValue,sizeof(int)));

//添加參數——@pin1

cmd->Parameters->Append(

????????????cmd->CreateParameter("",adInteger,adParamInput,sizeof(int),3L));

//添加參數——@pin2

cmd->Parameters->Append(

????????????cmd->CreateParameter("",adChar,adParamInput,10,_variant_t(_T("DD1"))));

//添加參數——@pout1

cmd->Parameters->Append(

????????????cmd->CreateParameter("",adInteger,adParamOutput,sizeof(int)));

//添加參數——@pout2

cmd->Parameters->Append(

????????????cmd->CreateParameter("",adChar,adParamOutput,10));

//執行存儲過程

theApp.m_pConnection->CursorLocation = adUseClient;

_RecordsetPtr????rs????=????cmd->Execute(NULL,NULL,adCmdStoredProc);

//獲取執行結果

_variant_t vRet????????=????cmd->Parameters->Item[0L]->Value; //獲得返回值

_variant_t vin1????????=????cmd->Parameters->Item[1L]->Value; //獲得@pin1

_variant_t vin2????????=????cmd->Parameters->Item[2L]->Value; //獲得@pin2

_variant_t vout1????=????cmd->Parameters->Item[3L]->Value; //獲得@pout1

_variant_t vout2????=????cmd->Parameters->Item[4L]->Value; //獲得@pout2

總結:不使用Refresh方法,則調用pCmd->Parameters->Append增加參數時,必須要注意參數的順序。

4.3.2 有名參數

如果創建參數時指定參數名稱,就可以根據名稱獲取執行結果了。

//添加參數——返回值

cmd->Parameters->Append(

????cmd->CreateParameter("@RETURN_VALUE",adInteger,adParamReturnValue,sizeof(int)));

//添加參數——@pin1

cmd->Parameters->Append(

????cmd->CreateParameter("@pin1",adInteger,adParamInput,sizeof(int),3L));

//添加參數——@pin2

cmd->Parameters->Append(

????cmd->CreateParameter("@pin2",adChar,adParamInput,10,_variant_t(_T("DD1"))));

//添加參數——@pout1

cmd->Parameters->Append(

????cmd->CreateParameter("@pout1",adInteger,adParamOutput,sizeof(int)));

//添加參數——@pout2

cmd->Parameters->Append(

????cmd->CreateParameter("@pout2",adChar,adParamOutput,10));

//執行存儲過程

theApp.m_pConnection->CursorLocation = adUseClient;

_RecordsetPtr????rs????=????cmd->Execute(NULL,NULL,adCmdStoredProc);

//獲取執行結果

_variant_t vRet????????=????cmd->Parameters->Item["@RETURN_VALUE"]->Value;

_variant_t vin1????????=????cmd->Parameters->Item["@pin1"]->Value;

_variant_t vin2????????=????cmd->Parameters->Item["@pin2"]->Value;

_variant_t vout1????=????cmd->Parameters->Item["@pout1"]->Value;

_variant_t vout2????=????cmd->Parameters->Item["@pout2"]->Value;

注意:即便參數有了名稱,添加參數時的順序也不能改動。

4.3.3 Refresh

執行cmd->Parameters->Refresh();會做哪些工作呢?

1、設置cmd->Parameters->Item[0L]

設置cmd->Parameters->Item[0L]->Name "@RETURN_VALUE"

設置cmd->Parameters->Item[0L]->Value VT_EMPTY

2、設置adParamInput參數的Value VT_EMPTY

3、設置adParamOutput參數的Value VT_NULL

當第23、……次執行cmd->Execute前,可以這么做:

cmd->Parameters->Refresh();

cmd->Parameters->Item["@pin1"]->Value????=????3L;

cmd->Parameters->Item["@pin2"]->Value????=????"C";

cmd->Execute(NULL,NULL,adCmdStoredProc);????????//2次執行存儲過程

cmd->Parameters->Refresh();

cmd->Parameters->Item["@pin1"]->Value????=????4L;

cmd->Parameters->Item["@pin2"]->Value????=????"D";

cmd->Execute(NULL,NULL,adCmdStoredProc); ????????//3次執行存儲過程

4.3.4 游標位置

如果游標位置不為adUseClient,那么取returnoutput參數之前,必須把返回的記錄集關閉掉。

下面的代碼能夠正常工作。因為這行代碼執行完畢后,返回的記錄集會被銷毀,銷毀前會關閉記錄集。

pCmd->Execute(NULL,NULL,adCmdStoredProc);

下面的代碼就得注意了。在 rs 銷毀前,能否取得returnoutput參數,取決于游標位置是否為adUseClient。如果是adUseClient就能正常取值,否則必須關閉rs記錄集后,才能正常取值。

_RecordsetPtr rs = pCmd->Execute(NULL,NULL,adCmdStoredProc);

theApp.m_pConnection->CursorLocation的取值會影響到pCmd->Execute返回記錄集的游標位置。如:pCmd->Execute執行前,執行theApp.m_pConnection->CursorLocation = adUseClient,則返回記錄集的游標位置也是adUseClient

4.4 重復使用命令對象

一個命令對象如果要重復使用多次(尤其是帶參數的命令),則在第一次執行之前,應將它的Prepared屬性設置為TRUE。這樣會使第一次執行減慢,但卻可以使以后的執行全部加快。

?

?

5 ADOX

5.1 引入庫文件

#import "C:/program Files/Common Files/system/ado/msadox.dll"

5.1.1 一個BUG

打開文件msadox.tlh,可以看到以下內容。其中,enum DataTypeEnum是先使用,后聲明的。

struct __declspec(uuid("0000061d-0000-0010-8000-00aa006d2ea4"))

Columns : _Collection

{

... ... ...

HRESULT Append (

const _variant_t & Item,

enum DataTypeEnum Type,

long DefinedSize );

... ... ...

};

?

enum DataTypeEnum

{

adEmpty = 0,

adTinyInt = 16,

... ... ...

};

在此情況下,如下代碼將會出現編譯錯誤。

#import "C:/Program Files/Common Files/System/ado/msado15.dll"\

rename("EOF","adoEOF") no_namespace

#import "C:/program Files/Common Files/system/ado/msadox.dll"

原因在于:編譯msadox.tlhColumns::Append函數的第2個參數將是msado15.tlh里的enum DataTypeEnum;編譯msadox.tliColumns::Append函數的第2個參數卻變成了msadox.tlh里的JRO::DataTypeEnum

解決方法一:調整import的順序

#import "C:/program Files/Common Files/system/ado/msadox.dll"

#import "C:/Program Files/Common Files/System/ado/msado15.dll"\

rename("EOF","adoEOF") no_namespace

解決方法二:都使用命名空間

#import "C:/Program Files/Common Files/System/ado/msado15.dll"\

rename("EOF","adoEOF")

#import "C:/program Files/Common Files/system/ado/msadox.dll"

5.2 創建數據庫

ADOX::_CatalogPtr pCatalog(__uuidof(ADOX::Catalog));

_bstr_t s("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:\\1.mdb");

pCatalog->Create(s);

5.3 創建數據表

ADODB::_ConnectionPtr conn(__uuidof(ADODB::Connection));

conn->Open(sConn,"","",ADODB::adModeUnknown);

conn->Execute("CREATE TABLE TestTable(記錄編號 INTEGER,姓名 TEXT,年齡 INTEGER)",NULL,ADODB::adCmdText);????

conn->Close();

?

6 JRO

JROJet and Replication Objects的縮寫,它可以用來壓縮Access數據庫文件。

6.1 VB6.0

6.1.1 引用

6.1.2 代碼

Dim sSrc As String

Dim sDes As String

sSrc = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;Data Source=G:\dbFile.mdb"

sDes = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;Data Source=G:\1.mdb"

Dim oJetEngine As New JRO.JetEngine

oJetEngine.CompactDatabase sSrc, sDes

Set oJetEngine = Nothing

注意:"Jet OLEDB:Database Password="可以指定密碼。

6.2 VC++

6.2.1 引入

引入JRO需要引入ADO庫,代碼如下:

#import "C:/Program Files/Common Files/System/ado/msado15.dll"\

rename("EOF","adoEOF") no_namespace

#import "C:/Program Files (x86)/Common Files/System/ado/msjro.dll"

上面的ADO庫未使用命名空間,如果使用了命名空間,則代碼如下。增加了兩條using語句,否則無法完成編譯。

#import "C:/Program Files/Common Files/System/ado/msado15.dll"\

rename("EOF","adoEOF")

using ADODB::_Recordset;

using ADODB::_RecordsetPtr;

#import "C:/Program Files (x86)/Common Files/System/ado/msjro.dll"

6.2.2 代碼

AfxOleInit();

_bstr_t sSrc(_T("Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;Data Source=G:\\dbFile.mdb"));

_bstr_t sDes(_T("Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;Data Source=G:\\1.mdb"));

JRO::IJetEnginePtr jet(__uuidof(JRO::JetEngine));

jet->CompactDatabase(sSrc,sDes);

注意:"Jet OLEDB:Database Password="可以指定密碼。

?

?

7 常見問題

7.1 連接失敗的原因

Enterprise Managemer內,打開將服務器的屬性對話框,在Security選項卡中,有一個選項Authentication

如果該選項是Windows NT only,則你的程序所用的連接字符串就一定要包含Trusted_Connection參數,并且其值必須為yes,如:

"Provider=SQLOLEDB;Server=888;Trusted_Connection=yes"

";Database=master;uid=lad;";

如果不按上述操作,程序運行時連接必然失敗。

如果Authentication選項是SQL Server and Windows NT,則你的程序所用的連接字符串可以不包含Trusted_Connection參數,如:

"Provider=SQLOLEDB;Server=888;Database=master;uid=lad;pwd=111;";

因為ADO給該參數取的默認值就是no,所以可以省略。我認為還是取默認值比較安全一些。

7.2 改變當前數據庫

使用Tansct-SQL中的USE語句即可。

7.3 判斷某個數據庫是否存在

1、可打開master數據庫中一個叫做SCHEMATA的視圖,其內容列出了該服務器上所有的數據庫名稱。

2、更簡便的方法是使用USE語句,成功了就存在;不成功,就不存在。例如:

try

{

????m_pConnect->Execute("USE INSURANCE_2002",NULL

????????????????????????,adCmdTextadExecuteNoRecords);

}

catch(_com_error&e)

{//數據庫INSURANCE_2002不存在

}

7.4 判斷某個表是否存在

1、同樣判斷一個表是否存在,也可以用是否成功地打開它來判斷,十分方便,例如:

try

{

????m_pRecordset->Open("mytable"

????????????????????????,_variant_t((IDispatch *)m_pConnection,true)

????????????????????????,adOpenKeyset,adLockOptimistic,adCmdTable);

}

catch (_com_error &e)

{//該表不存在

}

2、要不然可以采用麻煩一點的辦法,就是在MS-SQL服務器上的每個數據庫中都有一個名為sysobjects的表,查看此表的內容即知指定的表是否在該數據庫中。

3、同樣,每個數據庫中都有一個名為TABLES的視圖(View),查看此視圖的內容即知指定的表是否在該數據庫中。

7.5 ADO鎖定整張表

Dim oConn As New ADODB.Connection

Dim oRs As New ADODB.Recordset

oConn.ConnectionTimeout = 15

oConn.Open 'Provider=SQLOLEDB.1;Password=***;Persist Security Info=True;User ID=***;Initial Catalog=XSSystem;Data Source=10.108.0.1'

oConn.CommandTimeout = 15

oConn.IsolationLevel = adXactSerializable

oConn.BeginTrans

oRs.CursorLocation = adUseClient

oRs.Open 'SELECT * FROM ShangYaoGuFenBuyTable with(tablockx) where ID='123' ', oConn, adOpenKeyset, adLockPessimistic

If oRs.RecordCount > 0 Then

MsgBox '已經有一條記錄了'

Else

oRs.AddNew

oRs('id') = '123'

oRs.Update

End If

oRs.Close

oConn.CommitTrans '在此步驟之前,ShangYaoGuFenBuyTable整張表會被鎖住,其他用戶不能進行任何訪問

oConn.Close

Set oConn = Nothing

7.6 獲取記錄集行數

可以使用SQL語句:select count(*) from 表名

7.7 解決并發沖突

使用:Field 對象的 UnderlyingValue OriginalValue 屬性;Recordset Resync 方法和 Filter 屬性。

調用UpdateBatch后,一定要立即檢查Errors集合是否有錯誤。如果有錯誤,則應檢查錯誤是否為并發沖突:

1、設置 Recordset Filter 屬性為adFilterConflictingRecords。若此時 RecordCount 屬性等于零,就說明錯誤是由沖突以外的其他原因引起的。

2、調用 Recordset Resync 方法,將 AffectRecords 參數設置為adAffectGroup,將 ResyncValues 參數設置為 adResyncUnderlyingValuesResync 方法將用來自基本數據庫中的數據刷新在當前 Recordset 對象中的數據。通過使用 adAffectGroup,可以確保只有使用當前篩選設置的情況下可見的記錄。

轉載于:https://www.cnblogs.com/hanford/p/6164335.html

總結

以上是生活随笔為你收集整理的ADO的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

欧美丰满老熟妇xxxxx性 | 少妇高潮喷潮久久久影院 | 亚洲 激情 小说 另类 欧美 | 性欧美熟妇videofreesex | 7777奇米四色成人眼影 | 玩弄少妇高潮ⅹxxxyw | 亚洲中文无码av永久不收费 | 桃花色综合影院 | 无码人妻丰满熟妇区毛片18 | 午夜熟女插插xx免费视频 | 丰满少妇人妻久久久久久 | 亚洲国产精品成人久久蜜臀 | 麻豆国产人妻欲求不满 | 国产精品无码久久av | 欧美日本日韩 | 亚洲精品www久久久 | 亚拍精品一区二区三区探花 | 无码国产激情在线观看 | 国产网红无码精品视频 | 久久99精品久久久久久 | 午夜免费福利小电影 | 婷婷五月综合激情中文字幕 | 日本高清一区免费中文视频 | 久久综合久久自在自线精品自 | 熟女体下毛毛黑森林 | 女人被男人爽到呻吟的视频 | 欧美性猛交xxxx富婆 | 亚洲 日韩 欧美 成人 在线观看 | 无码乱肉视频免费大全合集 | 免费国产成人高清在线观看网站 | 无码播放一区二区三区 | 中文字幕av无码一区二区三区电影 | 亚洲 欧美 激情 小说 另类 | 亚洲色在线无码国产精品不卡 | 在线亚洲高清揄拍自拍一品区 | 国产成人精品视频ⅴa片软件竹菊 | 国产亲子乱弄免费视频 | 成 人 免费观看网站 | 亚洲国产日韩a在线播放 | 精品一区二区三区无码免费视频 | 欧洲精品码一区二区三区免费看 | 欧美喷潮久久久xxxxx | 丰满少妇熟乱xxxxx视频 | 久久国产精品精品国产色婷婷 | 特黄特色大片免费播放器图片 | 日欧一片内射va在线影院 | 成人欧美一区二区三区黑人 | 日本乱人伦片中文三区 | 真人与拘做受免费视频 | 久久视频在线观看精品 | 国产熟妇高潮叫床视频播放 | 夜夜躁日日躁狠狠久久av | 狠狠亚洲超碰狼人久久 | 亚洲精品欧美二区三区中文字幕 | 精品人妻中文字幕有码在线 | 97精品国产97久久久久久免费 | 亚洲精品综合一区二区三区在线 | 国产色精品久久人妻 | 欧美 日韩 人妻 高清 中文 | 欧美日本精品一区二区三区 | 久久综合久久自在自线精品自 | 波多野结衣乳巨码无在线观看 | 九九热爱视频精品 | 三上悠亚人妻中文字幕在线 | 强奷人妻日本中文字幕 | 国产舌乚八伦偷品w中 | 亚洲色欲色欲欲www在线 | 亚洲精品一区二区三区四区五区 | 亚洲成a人片在线观看无码 | 好男人www社区 | 丰满人妻翻云覆雨呻吟视频 | 国产精品va在线播放 | 国产精品久久国产精品99 | 亚洲日韩av一区二区三区中文 | 国产人妻人伦精品 | 日日碰狠狠丁香久燥 | 久久综合久久自在自线精品自 | 又大又紧又粉嫩18p少妇 | 日韩 欧美 动漫 国产 制服 | 精品无码国产一区二区三区av | 少妇人妻大乳在线视频 | 亚洲综合在线一区二区三区 | 国产日产欧产精品精品app | 国产成人精品三级麻豆 | 福利一区二区三区视频在线观看 | 成人性做爰aaa片免费看 | www国产亚洲精品久久网站 | 特黄特色大片免费播放器图片 | 国产无套内射久久久国产 | 久久亚洲日韩精品一区二区三区 | 综合人妻久久一区二区精品 | 熟女体下毛毛黑森林 | 亚洲区欧美区综合区自拍区 | 国产无套内射久久久国产 | 亚洲精品成人av在线 | 国产深夜福利视频在线 | 中文字幕乱码人妻二区三区 | 大肉大捧一进一出好爽视频 | 亚洲天堂2017无码中文 | 日本护士xxxxhd少妇 | 成人影院yy111111在线观看 | 大乳丰满人妻中文字幕日本 | 麻花豆传媒剧国产免费mv在线 | 色妞www精品免费视频 | 男人的天堂2018无码 | 国产热a欧美热a在线视频 | 日本大乳高潮视频在线观看 | 天天摸天天透天天添 | 日韩人妻少妇一区二区三区 | 伊人久久婷婷五月综合97色 | 国产成人综合美国十次 | 久久无码中文字幕免费影院蜜桃 | 免费无码午夜福利片69 | 亚洲阿v天堂在线 | 久久久久亚洲精品中文字幕 | 成人一区二区免费视频 | 日产精品99久久久久久 | 中文无码精品a∨在线观看不卡 | 四虎国产精品一区二区 | 野狼第一精品社区 | 精品久久综合1区2区3区激情 | 老司机亚洲精品影院 | 亚洲日韩一区二区 | 免费乱码人妻系列无码专区 | 中文字幕乱码人妻二区三区 | 国产办公室秘书无码精品99 | 国产真实伦对白全集 | 色综合久久久无码中文字幕 | 天堂а√在线中文在线 | 国产在线一区二区三区四区五区 | 国产区女主播在线观看 | 中文久久乱码一区二区 | 国产精品高潮呻吟av久久4虎 | 久久久www成人免费毛片 | 又大又紧又粉嫩18p少妇 | 十八禁真人啪啪免费网站 | 亚洲精品成a人在线观看 | 色偷偷人人澡人人爽人人模 | 国产av无码专区亚洲awww | 色妞www精品免费视频 | 天干天干啦夜天干天2017 | 国产人妻精品午夜福利免费 | 天天综合网天天综合色 | 色综合久久久无码网中文 | 一本久久a久久精品vr综合 | 熟女体下毛毛黑森林 | 性生交片免费无码看人 | 久久99热只有频精品8 | 乌克兰少妇xxxx做受 | 亚洲一区二区三区偷拍女厕 | 亚洲中文字幕乱码av波多ji | а√资源新版在线天堂 | 久久国产精品偷任你爽任你 | 国产 浪潮av性色四虎 | 中文字幕久久久久人妻 | 日韩人妻无码中文字幕视频 | 给我免费的视频在线观看 | 精品乱子伦一区二区三区 | 无码国产色欲xxxxx视频 | 国产精品多人p群无码 | 欧美午夜特黄aaaaaa片 | 国产亚洲美女精品久久久2020 | a片免费视频在线观看 | 亚洲中文字幕乱码av波多ji | 久久久av男人的天堂 | 亚洲码国产精品高潮在线 | 自拍偷自拍亚洲精品被多人伦好爽 | 中文字幕无码人妻少妇免费 | 无码一区二区三区在线观看 | 夜夜躁日日躁狠狠久久av | 夜夜躁日日躁狠狠久久av | 男女猛烈xx00免费视频试看 | 久久亚洲日韩精品一区二区三区 | 亚洲 激情 小说 另类 欧美 | 99久久99久久免费精品蜜桃 | 亚洲熟熟妇xxxx | 无码毛片视频一区二区本码 | 国产无套粉嫩白浆在线 | 日日摸夜夜摸狠狠摸婷婷 | 久久久久亚洲精品中文字幕 | 青青久在线视频免费观看 | 久久精品人人做人人综合 | 又粗又大又硬毛片免费看 | 欧美日韩久久久精品a片 | 久9re热视频这里只有精品 | 无套内射视频囯产 | 免费中文字幕日韩欧美 | 成人无码视频在线观看网站 | 强开小婷嫩苞又嫩又紧视频 | 日本精品久久久久中文字幕 | 久精品国产欧美亚洲色aⅴ大片 | 免费网站看v片在线18禁无码 | 四虎永久在线精品免费网址 | 5858s亚洲色大成网站www | 风流少妇按摩来高潮 | 色窝窝无码一区二区三区色欲 | 久久99精品国产麻豆蜜芽 | 在线播放亚洲第一字幕 | 国产精品多人p群无码 | 亚洲一区二区三区国产精华液 | 日本精品人妻无码77777 天堂一区人妻无码 | 久久久久久久女国产乱让韩 | 夜精品a片一区二区三区无码白浆 | 欧美性生交xxxxx久久久 | 亚洲欧美综合区丁香五月小说 | 性欧美牲交xxxxx视频 | 九一九色国产 | 国产av久久久久精东av | 大肉大捧一进一出好爽视频 | 亚洲啪av永久无码精品放毛片 | 午夜无码区在线观看 | 国产av一区二区精品久久凹凸 | 亚洲精品成a人在线观看 | 少妇无码av无码专区在线观看 | 亚洲成熟女人毛毛耸耸多 | 成人毛片一区二区 | 日韩精品a片一区二区三区妖精 | 图片小说视频一区二区 | 任你躁在线精品免费 | 成人精品视频一区二区三区尤物 | 亚洲国产一区二区三区在线观看 | 成人一在线视频日韩国产 | 国产欧美熟妇另类久久久 | 男人扒开女人内裤强吻桶进去 | 高潮毛片无遮挡高清免费视频 | 精品久久久无码中文字幕 | 亚洲七七久久桃花影院 | 激情内射亚州一区二区三区爱妻 | 内射后入在线观看一区 | 国产舌乚八伦偷品w中 | 国产内射爽爽大片视频社区在线 | 欧洲美熟女乱又伦 | 高潮毛片无遮挡高清免费视频 | 夜先锋av资源网站 | 99久久久无码国产aaa精品 | 性欧美牲交在线视频 | 亚洲精品国产第一综合99久久 | 亚洲乱码中文字幕在线 | 天堂а√在线中文在线 | www国产亚洲精品久久网站 | 亚洲国产综合无码一区 | 在线观看欧美一区二区三区 | 在线欧美精品一区二区三区 | 国产真实伦对白全集 | 亚洲а∨天堂久久精品2021 | 色综合视频一区二区三区 | 久久久久久国产精品无码下载 | 亚洲国产高清在线观看视频 | 国产黑色丝袜在线播放 | 欧美激情一区二区三区成人 | 天天躁夜夜躁狠狠是什么心态 | 人人妻人人澡人人爽精品欧美 | 牲欲强的熟妇农村老妇女视频 | 久久熟妇人妻午夜寂寞影院 | 中文无码精品a∨在线观看不卡 | 久久人人爽人人爽人人片ⅴ | 天天摸天天碰天天添 | 亚洲精品成a人在线观看 | 国产免费久久精品国产传媒 | 欧美丰满老熟妇xxxxx性 | 精品久久久久久亚洲精品 | 亚洲经典千人经典日产 | 人人妻人人澡人人爽精品欧美 | 狠狠噜狠狠狠狠丁香五月 | 亚洲精品一区二区三区在线观看 | 国产成人精品视频ⅴa片软件竹菊 | 日本肉体xxxx裸交 | 久久久久久九九精品久 | 国产午夜精品一区二区三区嫩草 | 精品久久综合1区2区3区激情 | 国产人成高清在线视频99最全资源 | 日韩无码专区 | 亚洲男女内射在线播放 | 精品国偷自产在线视频 | 国产精品亚洲综合色区韩国 | 亚洲va欧美va天堂v国产综合 | 亚洲国产精品一区二区第一页 | 国内精品九九久久久精品 | 精品aⅴ一区二区三区 | 国产无遮挡吃胸膜奶免费看 | 国产成人精品久久亚洲高清不卡 | 国产精品亚洲一区二区三区喷水 | 亚洲va中文字幕无码久久不卡 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 人妻中文无码久热丝袜 | 天天拍夜夜添久久精品大 | 日本精品人妻无码77777 天堂一区人妻无码 | 美女极度色诱视频国产 | 帮老师解开蕾丝奶罩吸乳网站 | 天海翼激烈高潮到腰振不止 | 美女毛片一区二区三区四区 | 鲁大师影院在线观看 | 久久久久成人片免费观看蜜芽 | 亚洲色www成人永久网址 | 国产无遮挡又黄又爽又色 | 激情人妻另类人妻伦 | 色狠狠av一区二区三区 | 天天综合网天天综合色 | 丰满人妻翻云覆雨呻吟视频 | 狠狠色噜噜狠狠狠狠7777米奇 | 国产 浪潮av性色四虎 | 亚洲日本va午夜在线电影 | 99久久亚洲精品无码毛片 | 亚洲国产日韩a在线播放 | 天堂无码人妻精品一区二区三区 | 麻豆果冻传媒2021精品传媒一区下载 | 亚洲综合精品香蕉久久网 | 又大又黄又粗又爽的免费视频 | 久久久精品国产sm最大网站 | aⅴ亚洲 日韩 色 图网站 播放 | 中文字幕无线码免费人妻 | 无码乱肉视频免费大全合集 | 色偷偷人人澡人人爽人人模 | 欧洲熟妇色 欧美 | 国产精品久久久久久亚洲影视内衣 | 国产av一区二区三区最新精品 | 国产av一区二区精品久久凹凸 | 99精品国产综合久久久久五月天 | 精品成人av一区二区三区 | 一本久久a久久精品亚洲 | 精品少妇爆乳无码av无码专区 | 熟妇激情内射com | 中文精品无码中文字幕无码专区 | 日韩无套无码精品 | 99视频精品全部免费免费观看 | 国精产品一品二品国精品69xx | 国产精品亚洲五月天高清 | 性生交大片免费看l | 欧美日韩一区二区免费视频 | 欧美 日韩 人妻 高清 中文 | 少妇一晚三次一区二区三区 | 一本久久a久久精品亚洲 | 狠狠综合久久久久综合网 | 久久99国产综合精品 | 色妞www精品免费视频 | 一本大道伊人av久久综合 | 精品久久久久香蕉网 | 国产在线精品一区二区三区直播 | 亚洲va中文字幕无码久久不卡 | 又紧又大又爽精品一区二区 | 双乳奶水饱满少妇呻吟 | 久久精品一区二区三区四区 | 欧美真人作爱免费视频 | 中文久久乱码一区二区 | 欧美精品无码一区二区三区 | 天堂а√在线中文在线 | 精品无人区无码乱码毛片国产 | 青春草在线视频免费观看 | 女人色极品影院 | 久久综合久久自在自线精品自 | 色老头在线一区二区三区 | 国产sm调教视频在线观看 | 亚洲娇小与黑人巨大交 | 日韩欧美中文字幕公布 | 日本乱偷人妻中文字幕 | 精品亚洲成av人在线观看 | 国内少妇偷人精品视频 | 精品乱子伦一区二区三区 | 欧美肥老太牲交大战 | 亚洲国产精品一区二区美利坚 | 色综合久久久无码中文字幕 | 久久久久久久女国产乱让韩 | 精品人妻av区 | 国产97色在线 | 免 | 人人妻人人澡人人爽欧美一区九九 | 国产又爽又猛又粗的视频a片 | 亚洲熟妇色xxxxx欧美老妇y | 亚洲人成影院在线观看 | 国内揄拍国内精品人妻 | 欧美成人高清在线播放 | 成人性做爰aaa片免费看不忠 | 水蜜桃av无码 | 久久精品人人做人人综合 | 九九久久精品国产免费看小说 | 女人被爽到呻吟gif动态图视看 | 亚洲精品中文字幕乱码 | 亚洲va中文字幕无码久久不卡 | 又黄又爽又色的视频 | 牲欲强的熟妇农村老妇女视频 | 国产两女互慰高潮视频在线观看 | 国产口爆吞精在线视频 | 亚洲成在人网站无码天堂 | 一二三四社区在线中文视频 | 波多野结衣av在线观看 | 亚洲爆乳精品无码一区二区三区 | 国产无遮挡又黄又爽又色 | 亚洲精品一区二区三区在线观看 | 中文字幕乱码中文乱码51精品 | 一个人看的视频www在线 | 久久97精品久久久久久久不卡 | 少妇人妻大乳在线视频 | 久久久久se色偷偷亚洲精品av | 国产区女主播在线观看 | 无码午夜成人1000部免费视频 | 大肉大捧一进一出好爽视频 | 亚洲天堂2017无码 | 色噜噜亚洲男人的天堂 | 午夜丰满少妇性开放视频 | 日日麻批免费40分钟无码 | 无码国产色欲xxxxx视频 | 成人免费视频一区二区 | 日日鲁鲁鲁夜夜爽爽狠狠 | 精品无码国产一区二区三区av | 午夜精品一区二区三区的区别 | 大胆欧美熟妇xx | 东京热男人av天堂 | 亚洲国产成人a精品不卡在线 | аⅴ资源天堂资源库在线 | 国产xxx69麻豆国语对白 | 亚洲国产成人a精品不卡在线 | 精品人人妻人人澡人人爽人人 | 一本久道久久综合狠狠爱 | 精品成人av一区二区三区 | 久久国内精品自在自线 | 一本久久伊人热热精品中文字幕 | 亚洲欧洲无卡二区视頻 | а√天堂www在线天堂小说 | 中文字幕无线码免费人妻 | 欧美国产日韩亚洲中文 | 性欧美熟妇videofreesex | 漂亮人妻洗澡被公强 日日躁 | 最新国产乱人伦偷精品免费网站 | 欧美熟妇另类久久久久久多毛 | 国产精品无码成人午夜电影 | 俄罗斯老熟妇色xxxx | 亚洲国产精品久久人人爱 | 日韩欧美成人免费观看 | 亚洲成av人综合在线观看 | 国产麻豆精品精东影业av网站 | 久久久久久九九精品久 | 国产99久久精品一区二区 | 又大又硬又黄的免费视频 | 老熟女乱子伦 | 国产色精品久久人妻 | 国产精品无码一区二区桃花视频 | 国产午夜福利亚洲第一 | 久久午夜无码鲁丝片午夜精品 | 国产人妻久久精品二区三区老狼 | 99久久婷婷国产综合精品青草免费 | 国产成人无码午夜视频在线观看 | 少妇无码av无码专区在线观看 | 无码帝国www无码专区色综合 | 无套内谢老熟女 | 人妻aⅴ无码一区二区三区 | 色综合久久中文娱乐网 | 国内丰满熟女出轨videos | 久久无码专区国产精品s | 人人妻人人澡人人爽欧美精品 | 玩弄中年熟妇正在播放 | 精品国产国产综合精品 | 日韩精品久久久肉伦网站 | 欧美熟妇另类久久久久久多毛 | 国内综合精品午夜久久资源 | 久久精品国产大片免费观看 | 扒开双腿吃奶呻吟做受视频 | 人人爽人人澡人人人妻 | 日本免费一区二区三区最新 | 97人妻精品一区二区三区 | 国产无av码在线观看 | 中国女人内谢69xxxx | 中文字幕乱码中文乱码51精品 | 久久这里只有精品视频9 | 综合激情五月综合激情五月激情1 | 内射白嫩少妇超碰 | 午夜精品久久久久久久久 | 无人区乱码一区二区三区 | 国产疯狂伦交大片 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 久久精品99久久香蕉国产色戒 | 性欧美熟妇videofreesex | 亚洲日韩精品欧美一区二区 | 5858s亚洲色大成网站www | 亚洲爆乳精品无码一区二区三区 | 国内精品久久久久久中文字幕 | 亚洲一区二区三区含羞草 | 少妇的肉体aa片免费 | 国产电影无码午夜在线播放 | 色欲av亚洲一区无码少妇 | 天天拍夜夜添久久精品大 | 人人超人人超碰超国产 | 77777熟女视频在线观看 а天堂中文在线官网 | 波多野结衣一区二区三区av免费 | 久久久中文字幕日本无吗 | 水蜜桃亚洲一二三四在线 | 欧美人与物videos另类 | 亚洲精品国偷拍自产在线观看蜜桃 | 18禁黄网站男男禁片免费观看 | 欧美老熟妇乱xxxxx | 亚洲午夜福利在线观看 | 天天拍夜夜添久久精品 | 国产疯狂伦交大片 | 亚洲综合无码久久精品综合 | 国产莉萝无码av在线播放 | 日韩亚洲欧美精品综合 | 国产精品国产三级国产专播 | 高清不卡一区二区三区 | 国内精品久久毛片一区二区 | 欧美国产日韩久久mv | 午夜肉伦伦影院 | 偷窥日本少妇撒尿chinese | 少妇性俱乐部纵欲狂欢电影 | 亚洲男女内射在线播放 | 中国女人内谢69xxxxxa片 | 国产亚洲精品久久久久久 | 天堂无码人妻精品一区二区三区 | 国产国语老龄妇女a片 | 亚洲中文字幕无码中文字在线 | 老熟女重囗味hdxx69 | 欧美黑人巨大xxxxx | 天天做天天爱天天爽综合网 | 在线观看免费人成视频 | 亚洲精品成a人在线观看 | 5858s亚洲色大成网站www | 久久人人爽人人爽人人片ⅴ | 少妇人妻大乳在线视频 | 天堂无码人妻精品一区二区三区 | 日韩 欧美 动漫 国产 制服 | 学生妹亚洲一区二区 | 国产乡下妇女做爰 | 狂野欧美激情性xxxx | 六十路熟妇乱子伦 | 国产精品无码永久免费888 | 一本大道伊人av久久综合 | 国产激情艳情在线看视频 | 99久久久无码国产aaa精品 | av无码电影一区二区三区 | 在线观看国产一区二区三区 | 久久综合久久自在自线精品自 | 中文字幕av伊人av无码av | 亚洲精品鲁一鲁一区二区三区 | 国产美女极度色诱视频www | 精品一区二区不卡无码av | 国产两女互慰高潮视频在线观看 | 久久久久国色av免费观看性色 | 国产激情无码一区二区app | 亚洲精品成人福利网站 | 人人妻人人澡人人爽欧美精品 | 亚洲爆乳大丰满无码专区 | 日本一卡二卡不卡视频查询 | 精品无码国产自产拍在线观看蜜 | 99精品无人区乱码1区2区3区 | 一本加勒比波多野结衣 | 人妻aⅴ无码一区二区三区 | 亚洲国产一区二区三区在线观看 | 性做久久久久久久免费看 | 精品亚洲成av人在线观看 | 四虎永久在线精品免费网址 | 国产亚洲欧美日韩亚洲中文色 | 国内揄拍国内精品人妻 | 国产va免费精品观看 | 亚洲毛片av日韩av无码 | 性欧美熟妇videofreesex | 99久久无码一区人妻 | 色综合视频一区二区三区 | 久久99精品国产麻豆 | а√天堂www在线天堂小说 | 国产精品久久久av久久久 | 国产精品久免费的黄网站 | 国内精品人妻无码久久久影院蜜桃 | 人妻人人添人妻人人爱 | 超碰97人人射妻 | 精品 日韩 国产 欧美 视频 | aⅴ亚洲 日韩 色 图网站 播放 | 国内精品九九久久久精品 | 色一情一乱一伦一区二区三欧美 | 精品国产av色一区二区深夜久久 | 免费观看黄网站 | 无套内射视频囯产 | 亚洲国产欧美国产综合一区 | 荫蒂添的好舒服视频囗交 | 扒开双腿疯狂进出爽爽爽视频 | 免费观看激色视频网站 | 国产精品亚洲lv粉色 | 亚洲综合无码久久精品综合 | 久久国产精品_国产精品 | 欧美真人作爱免费视频 | 成人亚洲精品久久久久软件 | 久久午夜无码鲁丝片午夜精品 | 色综合久久中文娱乐网 | 国产精品久久久久久亚洲影视内衣 | 国产无套内射久久久国产 | 亚洲精品一区二区三区婷婷月 | 国产人妻人伦精品 | 曰韩无码二三区中文字幕 | 7777奇米四色成人眼影 | 兔费看少妇性l交大片免费 | 日本精品高清一区二区 | 亚洲日韩一区二区 | 日韩少妇内射免费播放 | 亚洲精品中文字幕久久久久 | 日本爽爽爽爽爽爽在线观看免 | 欧美精品一区二区精品久久 | 国产成人无码一二三区视频 | 少女韩国电视剧在线观看完整 | 日日摸天天摸爽爽狠狠97 | 国产精品多人p群无码 | 亚洲国精产品一二二线 | 男人扒开女人内裤强吻桶进去 | 国产成人精品久久亚洲高清不卡 | 亚洲国产成人a精品不卡在线 | 黑人粗大猛烈进出高潮视频 | 成人试看120秒体验区 | 亚洲毛片av日韩av无码 | 少妇厨房愉情理9仑片视频 | 人妻少妇被猛烈进入中文字幕 | 亚洲成在人网站无码天堂 | 久久精品中文闷骚内射 | 日韩精品一区二区av在线 | 亚洲综合伊人久久大杳蕉 | 色婷婷久久一区二区三区麻豆 | 精品人人妻人人澡人人爽人人 | 黄网在线观看免费网站 | 亚洲狠狠婷婷综合久久 | 国产av久久久久精东av | 黑人巨大精品欧美一区二区 | 亚洲理论电影在线观看 | 国产人妻人伦精品1国产丝袜 | 午夜福利试看120秒体验区 | 午夜福利电影 | 日本一卡二卡不卡视频查询 | 亚洲国产成人a精品不卡在线 | 男人的天堂2018无码 | 久久99精品久久久久久动态图 | 小sao货水好多真紧h无码视频 | 中文字幕无码免费久久99 | 精品久久久无码中文字幕 | 久久人人97超碰a片精品 | 午夜免费福利小电影 | 日韩人妻无码中文字幕视频 | 高清国产亚洲精品自在久久 | 中文字幕无码人妻少妇免费 | 国产内射爽爽大片视频社区在线 | 国产农村妇女高潮大叫 | 无遮挡啪啪摇乳动态图 | 亚洲综合另类小说色区 | 97无码免费人妻超级碰碰夜夜 | 久久国产自偷自偷免费一区调 | 国产精品二区一区二区aⅴ污介绍 | 国产精品久久国产三级国 | 久久亚洲国产成人精品性色 | 久久亚洲精品中文字幕无男同 | 少妇无码av无码专区在线观看 | 久久视频在线观看精品 | 久久国产自偷自偷免费一区调 | 熟女俱乐部五十路六十路av | 亚洲色偷偷偷综合网 | 婷婷六月久久综合丁香 | 亚洲综合无码一区二区三区 | 国产亚洲日韩欧美另类第八页 | 精品久久久久久亚洲精品 | 精品aⅴ一区二区三区 | 九一九色国产 | 亚洲一区二区三区 | 久久综合久久自在自线精品自 | 国产精品香蕉在线观看 | a在线亚洲男人的天堂 | 美女毛片一区二区三区四区 | 国产在热线精品视频 | 成人欧美一区二区三区黑人免费 | 国产xxx69麻豆国语对白 | 国产精品理论片在线观看 | 真人与拘做受免费视频一 | 人妻夜夜爽天天爽三区 | 国产亚洲人成在线播放 | 97精品国产97久久久久久免费 | 久久五月精品中文字幕 | 乱人伦人妻中文字幕无码久久网 | 成人免费视频在线观看 | 蜜臀aⅴ国产精品久久久国产老师 | 久久精品女人的天堂av | 久久久国产精品无码免费专区 | 国产精品99爱免费视频 | 亚洲欧美色中文字幕在线 | 玩弄少妇高潮ⅹxxxyw | 国产日产欧产精品精品app | 老熟女乱子伦 | 一本无码人妻在中文字幕免费 | 免费人成在线视频无码 | 丰满少妇高潮惨叫视频 | 欧美野外疯狂做受xxxx高潮 | 熟妇人妻无码xxx视频 | 日本熟妇大屁股人妻 | 无码人妻少妇伦在线电影 | 亚洲成av人在线观看网址 | 免费观看又污又黄的网站 | 精品 日韩 国产 欧美 视频 | 日本熟妇乱子伦xxxx | 最新国产乱人伦偷精品免费网站 | 欧美大屁股xxxxhd黑色 | 欧美老妇交乱视频在线观看 | 亚洲小说图区综合在线 | 亚洲欧洲无卡二区视頻 | 丰满少妇女裸体bbw | 无码av免费一区二区三区试看 | 久久国产精品精品国产色婷婷 | 亚洲精品一区二区三区婷婷月 | 18禁止看的免费污网站 | 亚洲一区二区三区偷拍女厕 | 国产人妻精品一区二区三区 | 女人和拘做爰正片视频 | 婷婷丁香六月激情综合啪 | 精品国产一区二区三区四区在线看 | 久久国产精品萌白酱免费 | 日本大香伊一区二区三区 | 又湿又紧又大又爽a视频国产 | 丰满妇女强制高潮18xxxx | 国产在线aaa片一区二区99 | 久久国产36精品色熟妇 | 少妇高潮一区二区三区99 | 国产猛烈高潮尖叫视频免费 | 日韩在线不卡免费视频一区 | 麻豆人妻少妇精品无码专区 | 奇米影视888欧美在线观看 | 欧美日韩人成综合在线播放 | 中文字幕日产无线码一区 | 婷婷六月久久综合丁香 | 国产在线aaa片一区二区99 | 熟女体下毛毛黑森林 | 久久综合给合久久狠狠狠97色 | 国产超碰人人爽人人做人人添 | 欧美35页视频在线观看 | 露脸叫床粗话东北少妇 | 未满小14洗澡无码视频网站 | 国产成人综合在线女婷五月99播放 | av在线亚洲欧洲日产一区二区 | 国产性生交xxxxx无码 | 亚洲第一网站男人都懂 | 精品午夜福利在线观看 | 中文字幕日韩精品一区二区三区 | 日韩精品a片一区二区三区妖精 | 成人性做爰aaa片免费看 | 日本精品人妻无码77777 天堂一区人妻无码 | 小sao货水好多真紧h无码视频 | 野狼第一精品社区 | 好屌草这里只有精品 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲男女内射在线播放 | 国产亚洲精品久久久久久 | 国产麻豆精品一区二区三区v视界 | 无码人妻精品一区二区三区不卡 | 欧美性黑人极品hd | 国产成人亚洲综合无码 | 欧美怡红院免费全部视频 | 国产在线无码精品电影网 | 国产黑色丝袜在线播放 | 亚洲人成影院在线无码按摩店 | 欧美精品免费观看二区 | 亚洲 激情 小说 另类 欧美 | 内射巨臀欧美在线视频 | а√资源新版在线天堂 | 国产色精品久久人妻 | 亚洲精品久久久久中文第一幕 | 欧美日韩亚洲国产精品 | 天海翼激烈高潮到腰振不止 | 亚洲色欲色欲欲www在线 | 激情五月综合色婷婷一区二区 | 东京热一精品无码av | 无码国模国产在线观看 | 伊人久久婷婷五月综合97色 | 国产婷婷色一区二区三区在线 | 天天av天天av天天透 | 亚洲色大成网站www | 少妇无码av无码专区在线观看 | 日日躁夜夜躁狠狠躁 | 天天躁夜夜躁狠狠是什么心态 | 精品国产福利一区二区 | 97精品国产97久久久久久免费 | av小次郎收藏 | 国产乱人偷精品人妻a片 | 无码人妻丰满熟妇区毛片18 | 精品久久久久久人妻无码中文字幕 | 免费观看黄网站 | 国产在线精品一区二区高清不卡 | 蜜臀av无码人妻精品 | 久久国产精品二国产精品 | 亚洲精品欧美二区三区中文字幕 | 久久97精品久久久久久久不卡 | 2020久久超碰国产精品最新 | 内射后入在线观看一区 | 少妇人妻大乳在线视频 | 国产性生交xxxxx无码 | 黑人巨大精品欧美一区二区 | 免费乱码人妻系列无码专区 | 欧美日本精品一区二区三区 | 中文字幕日产无线码一区 | 沈阳熟女露脸对白视频 | 无码av岛国片在线播放 | 久久精品女人天堂av免费观看 | 日本护士xxxxhd少妇 | 草草网站影院白丝内射 | 久久精品中文字幕一区 | 天下第一社区视频www日本 | 97夜夜澡人人爽人人喊中国片 | 精品久久久无码中文字幕 | 欧美精品免费观看二区 | 人人爽人人爽人人片av亚洲 | 无套内射视频囯产 | 人人爽人人爽人人片av亚洲 | 欧美刺激性大交 | 对白脏话肉麻粗话av | 国产精品第一国产精品 | 无码吃奶揉捏奶头高潮视频 | 成熟人妻av无码专区 | 人妻夜夜爽天天爽三区 | 亚洲熟悉妇女xxx妇女av | 欧美怡红院免费全部视频 | 又黄又爽又色的视频 | 亚洲人成影院在线观看 | 亚洲欧美日韩国产精品一区二区 | 日本丰满熟妇videos | 国产电影无码午夜在线播放 | 国产精品久久久久久久9999 | 99久久人妻精品免费一区 | 7777奇米四色成人眼影 | 亚洲 另类 在线 欧美 制服 | 天天拍夜夜添久久精品大 | 亚洲码国产精品高潮在线 | 最新版天堂资源中文官网 | 亚洲一区二区三区偷拍女厕 | 性生交大片免费看l | 无码人妻久久一区二区三区不卡 | 国产偷国产偷精品高清尤物 | 国产精品国产三级国产专播 | 欧洲极品少妇 | 色欲人妻aaaaaaa无码 | 亚洲爆乳无码专区 | 日本爽爽爽爽爽爽在线观看免 | 欧美黑人巨大xxxxx | 亚洲gv猛男gv无码男同 | 伊人色综合久久天天小片 | 亚洲色欲色欲天天天www | 任你躁国产自任一区二区三区 | 2020久久超碰国产精品最新 | 国产真实乱对白精彩久久 | 欧美日韩视频无码一区二区三 | 亚洲 日韩 欧美 成人 在线观看 | 久久精品国产99久久6动漫 | 又粗又大又硬又长又爽 | 乌克兰少妇性做爰 | 300部国产真实乱 | 色妞www精品免费视频 | 国产乡下妇女做爰 | 色五月五月丁香亚洲综合网 | 国产色精品久久人妻 | 色欲综合久久中文字幕网 | 精品无码国产自产拍在线观看蜜 | 国产乡下妇女做爰 | 老熟妇仑乱视频一区二区 | 国产精品无码一区二区桃花视频 | 成人精品天堂一区二区三区 | 亚洲国产精品久久久天堂 | 麻豆av传媒蜜桃天美传媒 | 久久天天躁狠狠躁夜夜免费观看 | 国产成人综合在线女婷五月99播放 | 国产超级va在线观看视频 | 装睡被陌生人摸出水好爽 | 久久综合激激的五月天 | 一个人看的www免费视频在线观看 | 色一情一乱一伦一视频免费看 | 亚洲色欲色欲天天天www | 久久久成人毛片无码 | 亚洲第一无码av无码专区 | 成熟女人特级毛片www免费 | 日韩精品无码免费一区二区三区 | 在线天堂新版最新版在线8 | 无套内谢老熟女 | 日本免费一区二区三区最新 | 又大又硬又黄的免费视频 | 午夜不卡av免费 一本久久a久久精品vr综合 | 少妇激情av一区二区 | 狠狠色欧美亚洲狠狠色www | 久久久久久亚洲精品a片成人 | 精品日本一区二区三区在线观看 | 亚洲中文字幕无码一久久区 | 国产69精品久久久久app下载 | 精品久久久无码人妻字幂 | 成 人 网 站国产免费观看 | 精品国产aⅴ无码一区二区 | 欧美日韩人成综合在线播放 | 欧美丰满熟妇xxxx | 国产明星裸体无码xxxx视频 | 伊人久久大香线焦av综合影院 | 国产精品无码永久免费888 | 成 人 网 站国产免费观看 | 国产精品国产三级国产专播 | 国产99久久精品一区二区 | 日韩精品无码一本二本三本色 | 丰满岳乱妇在线观看中字无码 | 国产av无码专区亚洲a∨毛片 | 午夜肉伦伦影院 | 精品亚洲韩国一区二区三区 | 精品久久久无码人妻字幂 | 正在播放老肥熟妇露脸 | 国产激情无码一区二区 | 国产精品久久精品三级 | 午夜无码区在线观看 | 久久99精品久久久久久动态图 | 精品国产精品久久一区免费式 | 亚洲成av人片在线观看无码不卡 | 亚洲欧美精品伊人久久 | 亚洲 a v无 码免 费 成 人 a v | 欧美黑人巨大xxxxx | 久久久久se色偷偷亚洲精品av | 在线播放无码字幕亚洲 | 成在人线av无码免费 | 夜夜高潮次次欢爽av女 | 亚洲日韩乱码中文无码蜜桃臀网站 | 天天躁夜夜躁狠狠是什么心态 | 国色天香社区在线视频 | 男人的天堂av网站 | 东京热一精品无码av | 玩弄人妻少妇500系列视频 | 性欧美牲交在线视频 | 人人爽人人澡人人高潮 | 国产xxx69麻豆国语对白 | 国精产品一区二区三区 | 熟女俱乐部五十路六十路av | 国产精品久久久久影院嫩草 | 亚洲大尺度无码无码专区 | 午夜福利试看120秒体验区 | 丰满肥臀大屁股熟妇激情视频 | 国产成人久久精品流白浆 | 欧美 丝袜 自拍 制服 另类 | 欧美日韩亚洲国产精品 | 亚洲精品久久久久久久久久久 | 亚洲一区二区三区含羞草 | 精品久久久久久人妻无码中文字幕 | 久久精品女人的天堂av | 天天做天天爱天天爽综合网 | 狠狠色噜噜狠狠狠狠7777米奇 | 曰本女人与公拘交酡免费视频 | 秋霞特色aa大片 | 亚洲国产日韩a在线播放 | 亚洲自偷自拍另类第1页 | 人人妻在人人 | 奇米影视7777久久精品 | 天干天干啦夜天干天2017 | 网友自拍区视频精品 | 人人妻人人澡人人爽欧美一区 | 无遮无挡爽爽免费视频 | 亚洲另类伦春色综合小说 | 狠狠躁日日躁夜夜躁2020 | 欧美 日韩 人妻 高清 中文 | 一本一道久久综合久久 | 国产亚洲精品久久久久久久久动漫 | 婷婷五月综合激情中文字幕 | 日韩亚洲欧美中文高清在线 | 偷窥村妇洗澡毛毛多 | 少妇被黑人到高潮喷出白浆 | 国产香蕉尹人视频在线 | 欧美激情内射喷水高潮 | 波多野结衣一区二区三区av免费 | 大屁股大乳丰满人妻 | 中文字幕亚洲情99在线 | 强开小婷嫩苞又嫩又紧视频 | 5858s亚洲色大成网站www | aⅴ亚洲 日韩 色 图网站 播放 | 中文字幕人妻无码一夲道 | 无码一区二区三区在线观看 | 国产手机在线αⅴ片无码观看 | 亚洲一区二区三区香蕉 | 国产精品久久久久9999小说 | 国产精品国产三级国产专播 | 18禁黄网站男男禁片免费观看 | 亚洲日韩av一区二区三区中文 | 亚洲精品一区二区三区四区五区 | 四十如虎的丰满熟妇啪啪 | 国产成人综合美国十次 | 国产三级久久久精品麻豆三级 | 国产午夜手机精彩视频 | 18禁黄网站男男禁片免费观看 | 国产精品美女久久久网av | 精品国产乱码久久久久乱码 | 婷婷六月久久综合丁香 | 亚洲爆乳精品无码一区二区三区 | 日韩精品乱码av一区二区 | 激情五月综合色婷婷一区二区 | 亚洲春色在线视频 | 天堂а√在线地址中文在线 | 亚洲精品一区二区三区大桥未久 | 久久精品视频在线看15 | 97久久精品无码一区二区 | 午夜精品久久久久久久久 | 国产精品.xx视频.xxtv | 精品人妻人人做人人爽夜夜爽 | 亚洲熟妇色xxxxx亚洲 | 3d动漫精品啪啪一区二区中 | 日日碰狠狠丁香久燥 | 日韩人妻少妇一区二区三区 | 国色天香社区在线视频 | 国产特级毛片aaaaaaa高清 | 欧美人与禽猛交狂配 | 精品无人国产偷自产在线 | 97夜夜澡人人爽人人喊中国片 | 日产精品99久久久久久 | 亚洲国产欧美国产综合一区 | 婷婷丁香五月天综合东京热 | 国产极品视觉盛宴 | 欧美性生交活xxxxxdddd | 国产精品高潮呻吟av久久 | av无码久久久久不卡免费网站 | 国产午夜无码精品免费看 | 国产精品无码成人午夜电影 | 国产电影无码午夜在线播放 | 久久午夜无码鲁丝片午夜精品 | 美女张开腿让人桶 | 国内精品九九久久久精品 | 性做久久久久久久免费看 | 亚洲国产综合无码一区 | 色噜噜亚洲男人的天堂 | 精品日本一区二区三区在线观看 | 欧美丰满熟妇xxxx性ppx人交 | 天干天干啦夜天干天2017 | 亚欧洲精品在线视频免费观看 | 欧美激情内射喷水高潮 | 国产亚洲日韩欧美另类第八页 | 免费国产黄网站在线观看 | 亚洲 欧美 激情 小说 另类 | 一个人看的视频www在线 | av在线亚洲欧洲日产一区二区 | 中文久久乱码一区二区 | 97夜夜澡人人双人人人喊 | 强奷人妻日本中文字幕 | 亚洲综合精品香蕉久久网 | 国产精品沙发午睡系列 | 领导边摸边吃奶边做爽在线观看 | 精品人妻中文字幕有码在线 | 日韩精品成人一区二区三区 | 国产精品久久精品三级 | 久久久久se色偷偷亚洲精品av | 强辱丰满人妻hd中文字幕 | 欧美精品无码一区二区三区 | 久久精品一区二区三区四区 | 国产97人人超碰caoprom | 欧美老妇交乱视频在线观看 | 久久zyz资源站无码中文动漫 | 露脸叫床粗话东北少妇 | 欧美人与动性行为视频 | 亚洲自偷精品视频自拍 | 国产成人精品一区二区在线小狼 | 乱码午夜-极国产极内射 | 久久无码中文字幕免费影院蜜桃 | 亚洲最大成人网站 | 婷婷丁香六月激情综合啪 | 久久精品国产99精品亚洲 | 久久99热只有频精品8 | 人人超人人超碰超国产 | 99精品无人区乱码1区2区3区 | 午夜丰满少妇性开放视频 | 日韩精品久久久肉伦网站 | 国产亚洲精品久久久久久国模美 | 欧美刺激性大交 | 精品国偷自产在线 | 免费乱码人妻系列无码专区 | 老头边吃奶边弄进去呻吟 | 1000部啪啪未满十八勿入下载 | 好爽又高潮了毛片免费下载 | 免费无码午夜福利片69 | 色偷偷人人澡人人爽人人模 | 亚洲中文字幕久久无码 | 免费人成网站视频在线观看 | 九九综合va免费看 | 国产精品久久久午夜夜伦鲁鲁 | 理论片87福利理论电影 | 婷婷五月综合缴情在线视频 | 亚洲人成影院在线无码按摩店 | 思思久久99热只有频精品66 | 久久无码中文字幕免费影院蜜桃 | 国产乱人无码伦av在线a | 无套内射视频囯产 | 影音先锋中文字幕无码 | www一区二区www免费 | 国产精品.xx视频.xxtv | 国产激情精品一区二区三区 | 在线视频网站www色 | 中文字幕乱码人妻二区三区 | 久久99精品国产麻豆蜜芽 | 内射白嫩少妇超碰 | 色偷偷人人澡人人爽人人模 | 丝袜人妻一区二区三区 | 亚洲色无码一区二区三区 | 对白脏话肉麻粗话av | 中文字幕av日韩精品一区二区 | 久久精品国产99久久6动漫 | 免费看少妇作爱视频 | 牲欲强的熟妇农村老妇女视频 | aⅴ在线视频男人的天堂 | 亚洲精品无码国产 | 婷婷五月综合激情中文字幕 | 国产美女极度色诱视频www | 无码国产激情在线观看 | 国产精品免费大片 | 亚洲小说图区综合在线 | 国产精品国产三级国产专播 | 在线播放免费人成毛片乱码 | 国产精品爱久久久久久久 | 精品人妻av区 | 特黄特色大片免费播放器图片 | 精品aⅴ一区二区三区 | 蜜臀av无码人妻精品 | 国产香蕉尹人视频在线 | 亚洲中文字幕av在天堂 | 国产极品美女高潮无套在线观看 | 日本大香伊一区二区三区 | 日日干夜夜干 | 久久久精品欧美一区二区免费 | 无码吃奶揉捏奶头高潮视频 | 无码成人精品区在线观看 | 双乳奶水饱满少妇呻吟 | 动漫av一区二区在线观看 | 免费观看黄网站 | 图片区 小说区 区 亚洲五月 | 秋霞成人午夜鲁丝一区二区三区 | 一本久道高清无码视频 | 狂野欧美性猛xxxx乱大交 | 夜夜躁日日躁狠狠久久av | 1000部啪啪未满十八勿入下载 | 免费播放一区二区三区 | 性生交片免费无码看人 | 国产精品国产自线拍免费软件 | 国产成人综合美国十次 | 亚洲熟熟妇xxxx | 国产一区二区三区四区五区加勒比 | 欧美熟妇另类久久久久久不卡 | 野外少妇愉情中文字幕 | 九月婷婷人人澡人人添人人爽 | 欧美大屁股xxxxhd黑色 | 人妻互换免费中文字幕 | 亚洲国产精品无码久久久久高潮 | 国产黄在线观看免费观看不卡 | √天堂资源地址中文在线 | 国产精品久久久久7777 | 中文字幕色婷婷在线视频 | 国产精品亚洲专区无码不卡 | 午夜精品一区二区三区在线观看 | 国产精品国产自线拍免费软件 | 牲交欧美兽交欧美 | 97久久超碰中文字幕 | 婷婷丁香五月天综合东京热 | 国产成人精品久久亚洲高清不卡 | 性做久久久久久久久 | 中文字幕人妻无码一夲道 | 亚洲精品欧美二区三区中文字幕 | 久久午夜夜伦鲁鲁片无码免费 | 日本熟妇人妻xxxxx人hd | 国产av一区二区精品久久凹凸 | 精品久久久无码中文字幕 | 午夜无码人妻av大片色欲 | 国产成人精品久久亚洲高清不卡 | 国产精品福利视频导航 | 麻豆国产人妻欲求不满 | 国产熟女一区二区三区四区五区 | 亚洲乱码日产精品bd | 强奷人妻日本中文字幕 | 国精产品一区二区三区 | 中文字幕精品av一区二区五区 | 日韩 欧美 动漫 国产 制服 | 国产精品久久久av久久久 | 久久国产精品精品国产色婷婷 | 大乳丰满人妻中文字幕日本 | 国内老熟妇对白xxxxhd | 美女极度色诱视频国产 | 中文字幕av无码一区二区三区电影 | 少妇无码吹潮 | 一本色道久久综合亚洲精品不卡 | 国产suv精品一区二区五 | 欧美三级不卡在线观看 | 蜜桃视频韩日免费播放 | 国产办公室秘书无码精品99 | 亚洲第一网站男人都懂 | 又湿又紧又大又爽a视频国产 | 色欲av亚洲一区无码少妇 | 伊人久久婷婷五月综合97色 | 国产精品久久久久久亚洲毛片 | 国产人妻久久精品二区三区老狼 | 无码av岛国片在线播放 | 久9re热视频这里只有精品 | 中文字幕无码av波多野吉衣 | 荫蒂被男人添的好舒服爽免费视频 | 欧美国产日产一区二区 | 无码av岛国片在线播放 | 黑人粗大猛烈进出高潮视频 | 四虎永久在线精品免费网址 | 西西人体www44rt大胆高清 | 99久久人妻精品免费二区 | 中文字幕无码av波多野吉衣 | 无码播放一区二区三区 | www成人国产高清内射 | 久久久久成人片免费观看蜜芽 | 88国产精品欧美一区二区三区 | 中文字幕久久久久人妻 | 国产sm调教视频在线观看 | 日本护士毛茸茸高潮 | 久久精品成人欧美大片 | 国产九九九九九九九a片 | 丰满人妻翻云覆雨呻吟视频 | 色婷婷欧美在线播放内射 | 欧美一区二区三区视频在线观看 | 无码帝国www无码专区色综合 | 日本一区二区三区免费高清 | 无遮无挡爽爽免费视频 | 黑人巨大精品欧美黑寡妇 | 一本无码人妻在中文字幕免费 | 麻花豆传媒剧国产免费mv在线 | 樱花草在线播放免费中文 | 宝宝好涨水快流出来免费视频 | 无码精品国产va在线观看dvd | 精品乱码久久久久久久 | 77777熟女视频在线观看 а天堂中文在线官网 | 草草网站影院白丝内射 | 国内揄拍国内精品人妻 | 丰满人妻翻云覆雨呻吟视频 | 特黄特色大片免费播放器图片 | 日本饥渴人妻欲求不满 | 狂野欧美激情性xxxx | 国产亚洲精品久久久久久国模美 | 亚洲色偷偷偷综合网 | 久久久精品欧美一区二区免费 | 初尝人妻少妇中文字幕 | 国产舌乚八伦偷品w中 | 国产肉丝袜在线观看 | 在线播放无码字幕亚洲 | 天天做天天爱天天爽综合网 | 性啪啪chinese东北女人 | 少妇久久久久久人妻无码 | 宝宝好涨水快流出来免费视频 | a在线亚洲男人的天堂 | 亚洲爆乳大丰满无码专区 | 一区二区传媒有限公司 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 亚洲国产欧美日韩精品一区二区三区 | 亚洲成av人片天堂网无码】 | 国产亚洲精品久久久久久国模美 | 国产精华av午夜在线观看 | 在线播放亚洲第一字幕 | 国产午夜视频在线观看 | 亚洲s色大片在线观看 | 国产真实乱对白精彩久久 | 青青青手机频在线观看 | 欧美三级a做爰在线观看 | 高清国产亚洲精品自在久久 | 少妇人妻偷人精品无码视频 | 中文久久乱码一区二区 | 九九综合va免费看 | 一个人看的www免费视频在线观看 | 亚洲综合精品香蕉久久网 | 国产又爽又猛又粗的视频a片 | 又大又硬又爽免费视频 | 亚洲成a人一区二区三区 | 精品国产青草久久久久福利 | 波多野结衣一区二区三区av免费 | 亚洲另类伦春色综合小说 | 色偷偷人人澡人人爽人人模 | 最近的中文字幕在线看视频 | 国产人成高清在线视频99最全资源 | 国产三级久久久精品麻豆三级 | 影音先锋中文字幕无码 | 在线 国产 欧美 亚洲 天堂 | 久久久久久久女国产乱让韩 | 女人被爽到呻吟gif动态图视看 | 欧美 日韩 亚洲 在线 | 高潮毛片无遮挡高清免费 | 国产香蕉97碰碰久久人人 | 精品国产一区二区三区四区在线看 | 性生交大片免费看l | 免费观看黄网站 | 亚洲啪av永久无码精品放毛片 | 在线播放无码字幕亚洲 | 国产又粗又硬又大爽黄老大爷视 | 成人亚洲精品久久久久 | 精品无码一区二区三区爱欲 | 少妇厨房愉情理9仑片视频 | 好男人社区资源 | 日韩av无码一区二区三区不卡 | 欧美日韩一区二区免费视频 | 无遮无挡爽爽免费视频 | 亚洲日韩一区二区 | 亚洲va中文字幕无码久久不卡 | 好男人社区资源 | 蜜桃臀无码内射一区二区三区 | 国产精品爱久久久久久久 | 欧美国产亚洲日韩在线二区 | 色爱情人网站 | 2019nv天堂香蕉在线观看 | 性欧美熟妇videofreesex | 男女猛烈xx00免费视频试看 | 亚洲精品成人av在线 | 色噜噜亚洲男人的天堂 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 又大又黄又粗又爽的免费视频 | 2020久久超碰国产精品最新 | 性欧美疯狂xxxxbbbb | 在线播放免费人成毛片乱码 | 久久久久久国产精品无码下载 | 女人高潮内射99精品 | 久久人人97超碰a片精品 | 久久久中文久久久无码 | 熟妇人妻激情偷爽文 | 欧美变态另类xxxx | 动漫av网站免费观看 | 精品人人妻人人澡人人爽人人 | 久久精品国产99精品亚洲 | 性欧美videos高清精品 | 欧美亚洲日韩国产人成在线播放 | 欧美高清在线精品一区 | 亚洲国产成人a精品不卡在线 | 国产黄在线观看免费观看不卡 | 亚洲码国产精品高潮在线 | 久久成人a毛片免费观看网站 | 人人妻人人澡人人爽欧美一区 | 无码午夜成人1000部免费视频 | 精品无码国产一区二区三区av | 亚洲国产一区二区三区在线观看 | 欧美性猛交xxxx富婆 | 超碰97人人射妻 | 国产香蕉尹人视频在线 | 久久无码专区国产精品s | 国产精品久久久久无码av色戒 | 男女爱爱好爽视频免费看 | 亚洲爆乳无码专区 | 人人澡人人透人人爽 | 国产午夜亚洲精品不卡下载 | 久久综合网欧美色妞网 | 少妇性l交大片欧洲热妇乱xxx | 奇米影视888欧美在线观看 | 撕开奶罩揉吮奶头视频 | 人人妻人人澡人人爽人人精品浪潮 | 久久精品国产大片免费观看 | 无码午夜成人1000部免费视频 | 精品久久久久久亚洲精品 | 亚洲日韩av一区二区三区中文 | 久久亚洲中文字幕精品一区 | 精品乱子伦一区二区三区 | 18黄暴禁片在线观看 | 天下第一社区视频www日本 | 精品国产精品久久一区免费式 | 色婷婷香蕉在线一区二区 | 国产激情一区二区三区 | 东京无码熟妇人妻av在线网址 | 熟女少妇在线视频播放 | 久久久久成人精品免费播放动漫 | 日日碰狠狠丁香久燥 | 牲欲强的熟妇农村老妇女 | 97夜夜澡人人双人人人喊 | 亚洲欧洲中文日韩av乱码 | 亚洲精品国产精品乱码视色 | 日本一卡2卡3卡四卡精品网站 | 欧美激情综合亚洲一二区 | 无码人妻精品一区二区三区下载 | 久久国语露脸国产精品电影 | 久久久久久九九精品久 | 丰满人妻翻云覆雨呻吟视频 | 精品 日韩 国产 欧美 视频 | 好爽又高潮了毛片免费下载 | 欧美xxxx黑人又粗又长 | 88国产精品欧美一区二区三区 | 亚洲人成影院在线无码按摩店 | 免费无码一区二区三区蜜桃大 | 中文字幕av无码一区二区三区电影 | 日本xxxx色视频在线观看免费 | 国产午夜亚洲精品不卡下载 | 激情五月综合色婷婷一区二区 | 内射巨臀欧美在线视频 | 日日摸天天摸爽爽狠狠97 | 欧美三级不卡在线观看 | 欧美日韩综合一区二区三区 | 免费人成在线视频无码 | 九月婷婷人人澡人人添人人爽 | 日韩人妻少妇一区二区三区 | av无码久久久久不卡免费网站 | 婷婷综合久久中文字幕蜜桃三电影 | 99视频精品全部免费免费观看 | 啦啦啦www在线观看免费视频 | 免费播放一区二区三区 | 学生妹亚洲一区二区 | 国产精品.xx视频.xxtv | 人妻aⅴ无码一区二区三区 | 国产精品福利视频导航 | 久久精品一区二区三区四区 | 丰满人妻一区二区三区免费视频 | 亚洲日本在线电影 | 亚洲伊人久久精品影院 | 精品久久8x国产免费观看 | 清纯唯美经典一区二区 | 最近的中文字幕在线看视频 | 国产国产精品人在线视 | 欧美日本免费一区二区三区 | 女人高潮内射99精品 | 亚洲一区二区三区国产精华液 | 999久久久国产精品消防器材 | 性生交片免费无码看人 | 久久www免费人成人片 | 一本无码人妻在中文字幕免费 | 国产女主播喷水视频在线观看 | 国产在热线精品视频 | 对白脏话肉麻粗话av | 丝袜美腿亚洲一区二区 | 粗大的内捧猛烈进出视频 | 丰满少妇弄高潮了www | 无套内谢老熟女 | 国产精品a成v人在线播放 | 人妻少妇被猛烈进入中文字幕 | 久久精品人人做人人综合 | 色诱久久久久综合网ywww | 99久久精品国产一区二区蜜芽 | 色婷婷久久一区二区三区麻豆 | 性欧美牲交xxxxx视频 | 国产97在线 | 亚洲 | 国产精品久久久av久久久 | 亚洲精品一区二区三区四区五区 | 又色又爽又黄的美女裸体网站 | 国产电影无码午夜在线播放 | 亚洲精品一区三区三区在线观看 | 日韩欧美成人免费观看 | 图片小说视频一区二区 | 少妇性荡欲午夜性开放视频剧场 | 精品国产一区二区三区av 性色 | 日本成熟视频免费视频 | 宝宝好涨水快流出来免费视频 | 无套内谢的新婚少妇国语播放 | 午夜精品一区二区三区在线观看 | 国产精品久久福利网站 | 无码人妻精品一区二区三区不卡 | 亚洲色欲久久久综合网东京热 | 成人无码影片精品久久久 | 人妻尝试又大又粗久久 | 永久免费观看美女裸体的网站 | 色 综合 欧美 亚洲 国产 | 欧美熟妇另类久久久久久多毛 | 国产手机在线αⅴ片无码观看 | 老熟妇乱子伦牲交视频 | 国产区女主播在线观看 | 狠狠cao日日穞夜夜穞av | 性史性农村dvd毛片 | 亚洲一区二区三区四区 | 中文字幕av日韩精品一区二区 | 人妻互换免费中文字幕 | 免费无码一区二区三区蜜桃大 | 国产av无码专区亚洲awww | 女人被男人躁得好爽免费视频 | 国产美女极度色诱视频www | 久久综合激激的五月天 | 国产精品人妻一区二区三区四 | 国产成人综合在线女婷五月99播放 | 精品无码国产自产拍在线观看蜜 | 国产亚洲精品久久久ai换 | 国产精品igao视频网 | 美女毛片一区二区三区四区 | 欧美丰满少妇xxxx性 | 牲欲强的熟妇农村老妇女视频 | 欧洲熟妇精品视频 | 欧美日本精品一区二区三区 | 久久97精品久久久久久久不卡 | 任你躁在线精品免费 | 老太婆性杂交欧美肥老太 | 国产精品鲁鲁鲁 | 久久人妻内射无码一区三区 | 亚洲中文字幕久久无码 | 一本色道久久综合狠狠躁 | 欧美日韩亚洲国产精品 | 一本色道久久综合亚洲精品不卡 | 2020最新国产自产精品 | 精品厕所偷拍各类美女tp嘘嘘 | 日日麻批免费40分钟无码 | 丰满人妻被黑人猛烈进入 | 婷婷丁香六月激情综合啪 | 亚洲精品中文字幕久久久久 | 国产无遮挡又黄又爽免费视频 | 少妇愉情理伦片bd | 精品无码国产自产拍在线观看蜜 | 亚洲毛片av日韩av无码 | 日韩少妇内射免费播放 | 在线亚洲高清揄拍自拍一品区 | 欧美喷潮久久久xxxxx | 亚洲日韩一区二区三区 | 丰满人妻被黑人猛烈进入 | 色综合久久88色综合天天 | 麻豆精产国品 | 中文字幕av无码一区二区三区电影 | 免费视频欧美无人区码 | 在教室伦流澡到高潮hnp视频 | 国产绳艺sm调教室论坛 | 无套内谢的新婚少妇国语播放 | 伊人久久大香线蕉午夜 | 99久久久无码国产aaa精品 | 午夜精品一区二区三区在线观看 | 天堂亚洲2017在线观看 | 亚洲欧美日韩国产精品一区二区 | 天天摸天天透天天添 | 日日摸日日碰夜夜爽av | 日韩av激情在线观看 | 午夜性刺激在线视频免费 | 欧美真人作爱免费视频 | 在线亚洲高清揄拍自拍一品区 | 桃花色综合影院 | 免费人成网站视频在线观看 | 国产精品久久久久久久9999 | 日韩精品无码一区二区中文字幕 | 亚洲精品一区国产 | 国产综合色产在线精品 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲精品一区二区三区大桥未久 | 成 人影片 免费观看 | 国产欧美精品一区二区三区 | 久久久久久亚洲精品a片成人 | 无码福利日韩神码福利片 | 国产成人精品一区二区在线小狼 | 精品无码成人片一区二区98 | 久久久久成人片免费观看蜜芽 | 亚洲成色www久久网站 | 久久久久国色av免费观看性色 | 亚洲精品中文字幕久久久久 | 免费中文字幕日韩欧美 | 成熟妇人a片免费看网站 | 人妻无码久久精品人妻 | 影音先锋中文字幕无码 | 99久久99久久免费精品蜜桃 | 国产欧美熟妇另类久久久 | 午夜精品一区二区三区的区别 | 欧美喷潮久久久xxxxx | 成人精品天堂一区二区三区 | 无码一区二区三区在线观看 | 久久97精品久久久久久久不卡 | 久久久久国色av免费观看性色 | 免费播放一区二区三区 | 老头边吃奶边弄进去呻吟 | 国产色视频一区二区三区 | 日本一区二区更新不卡 | 亚洲综合精品香蕉久久网 | 永久免费精品精品永久-夜色 | 国产成人无码a区在线观看视频app | 成年美女黄网站色大免费视频 | 精品人妻人人做人人爽 | 国产高清av在线播放 | 中文字幕无码av激情不卡 | 蜜桃视频插满18在线观看 | 午夜福利不卡在线视频 | www一区二区www免费 | 久久精品丝袜高跟鞋 | 六十路熟妇乱子伦 | 日韩欧美中文字幕公布 | 欧美熟妇另类久久久久久不卡 | 性生交片免费无码看人 | 一本无码人妻在中文字幕免费 | 天天av天天av天天透 | 国产精品久久久久久久影院 | 亚洲大尺度无码无码专区 | 亚洲国产欧美在线成人 | 国产精品福利视频导航 | 欧美 日韩 人妻 高清 中文 | 精品无码一区二区三区的天堂 | 欧美精品国产综合久久 | 男女下面进入的视频免费午夜 | 99久久久无码国产精品免费 | 熟妇女人妻丰满少妇中文字幕 | 水蜜桃色314在线观看 | 精品国产一区av天美传媒 | 亚洲一区二区三区含羞草 | 日韩无码专区 | 国产一精品一av一免费 | 日日碰狠狠丁香久燥 | 亚洲男女内射在线播放 | 亚洲精品www久久久 | 无码人妻丰满熟妇区毛片18 | 精品国产一区二区三区av 性色 | 3d动漫精品啪啪一区二区中 | 国产精品99久久精品爆乳 | 亚洲日本va午夜在线电影 | 国产人妻精品一区二区三区不卡 | 国产精品久久久久久亚洲毛片 | 爱做久久久久久 | 狠狠色丁香久久婷婷综合五月 | 国产精品手机免费 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 中文字幕无码乱人伦 | 啦啦啦www在线观看免费视频 | 精品国产aⅴ无码一区二区 | 乱人伦人妻中文字幕无码 | 狠狠色噜噜狠狠狠狠7777米奇 | 国产亚洲精品久久久ai换 | 永久黄网站色视频免费直播 | 麻豆蜜桃av蜜臀av色欲av | 中文字幕无线码免费人妻 | 精品久久久久久人妻无码中文字幕 | 女人和拘做爰正片视频 | 人人妻人人澡人人爽精品欧美 | 国产成人无码午夜视频在线观看 | 欧美性色19p | 狠狠色噜噜狠狠狠狠7777米奇 | 性欧美疯狂xxxxbbbb | 国产精品第一国产精品 | 人妻有码中文字幕在线 | 日产精品高潮呻吟av久久 | 中文字幕乱码中文乱码51精品 | 少妇高潮喷潮久久久影院 | 久久久久人妻一区精品色欧美 | 国产尤物精品视频 | 粗大的内捧猛烈进出视频 | 精品亚洲韩国一区二区三区 | 亚洲精品国产第一综合99久久 | 狠狠色欧美亚洲狠狠色www | 久久国产精品偷任你爽任你 | 国产精品高潮呻吟av久久4虎 | 国产精品自产拍在线观看 | 人人妻人人藻人人爽欧美一区 | 国产欧美亚洲精品a | 高潮喷水的毛片 | 国产激情综合五月久久 | 欧洲极品少妇 | 国产精品久久国产三级国 | 在线观看免费人成视频 | 亚洲中文字幕无码中文字在线 | 国产福利视频一区二区 | 日本成熟视频免费视频 | 国产婷婷色一区二区三区在线 | 大乳丰满人妻中文字幕日本 | 无码吃奶揉捏奶头高潮视频 | 国产成人精品优优av | 欧美人与禽猛交狂配 | 成人女人看片免费视频放人 | 国产做国产爱免费视频 | 波多野结衣乳巨码无在线观看 | 亚洲国产一区二区三区在线观看 | 日日橹狠狠爱欧美视频 | 奇米影视7777久久精品 | 狠狠色欧美亚洲狠狠色www | 国产三级精品三级男人的天堂 | 中文字幕亚洲情99在线 | 丰满诱人的人妻3 | 国产av人人夜夜澡人人爽麻豆 | 在线看片无码永久免费视频 | 精品偷自拍另类在线观看 | 狂野欧美激情性xxxx | 无码av中文字幕免费放 | 伊人久久大香线蕉午夜 | 一个人看的视频www在线 | a片在线免费观看 | 精品人人妻人人澡人人爽人人 | 国产精品久久久久影院嫩草 | 中文字幕乱码亚洲无线三区 | 在线播放免费人成毛片乱码 | 国产精品亚洲综合色区韩国 | 久久精品一区二区三区四区 | 强开小婷嫩苞又嫩又紧视频 | 色偷偷人人澡人人爽人人模 | 中文字幕 人妻熟女 | 99久久99久久免费精品蜜桃 | 亚洲日本一区二区三区在线 | 国产精品久久久 | 午夜男女很黄的视频 | 久久精品国产一区二区三区肥胖 | 国产无遮挡又黄又爽又色 | 精品国产一区二区三区四区在线看 | 国产美女极度色诱视频www | 欧美激情综合亚洲一二区 | 好爽又高潮了毛片免费下载 | 无码av最新清无码专区吞精 | 无遮挡国产高潮视频免费观看 | 牛和人交xxxx欧美 | 中文字幕无码日韩欧毛 | 成人性做爰aaa片免费看 | 乱人伦中文视频在线观看 | 欧洲vodafone精品性 | 亚洲综合无码一区二区三区 | 欧美成人免费全部网站 | 国产精品无码久久av | 久久久久久亚洲精品a片成人 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 色欲av亚洲一区无码少妇 | 成人亚洲精品久久久久 | 国产人妻精品午夜福利免费 | 成熟人妻av无码专区 | 欧美激情综合亚洲一二区 | 久久国产劲爆∧v内射 | 图片小说视频一区二区 | 99er热精品视频 |