亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? axconnction.cpp

?? 一個非常好用的ADO封裝類,程序員不再需要跟煩人的COM接口打交道,寫數(shù)據(jù)庫程序不再麻煩!
?? CPP
字號:
#include "StdAfx.h"
#include "AxLib.h"

using namespace dbAx;

///////////////////////////////////////////////////////////////
//	Construction

//Global connection object collection
dbAx::_AxConnectionsT dbAx::m_AxConnections;

void dbAx::Init()
{
	//Initialize COM
  HRESULT hr = CoInitialize(NULL);
	if FAILED( hr )
    ThrowAxException(AXLIB_ERROR_INIT, _T("AxLibInit - COM Initialization."), hr);

	//Clear Connections array
  if ( !m_AxConnections.empty() )
    m_AxConnections.erase(m_AxConnections.begin(), m_AxConnections.end());
}

void dbAx::Term()
{
	//Ensure all connections are closed / cleanup
  _AxConnectionsT::iterator i;

  for ( i = m_AxConnections.begin(); i != m_AxConnections.end(); i++ )
  {
    if ( (*i)->_IsOpen() )
      (*i)->Close();
  }
  
  if ( !m_AxConnections.empty() )
    m_AxConnections.erase(m_AxConnections.begin(), m_AxConnections.end());

  CoUninitialize();
}

void dbAx::DropConnection(dbAx::CAxConnection *pCn)
{
  _AxConnectionsT::iterator i = m_AxConnections.begin();

  for (; i != m_AxConnections.end(); i++ )
  {
    if ( *i == pCn )
    {
      m_AxConnections.erase(i);
      break;
    }
  }
}


//--------------------------------------------------------------------------
// Utility functions

//Converty MultiByte to WideChar
const wchar_t* dbAx::M2W(LPCSTR lpszCharStr)
{
	wchar_t* pszBuf = NULL;
	int nBufSize = MultiByteToWideChar(CP_ACP, 0, lpszCharStr, -1, (LPWSTR)pszBuf, 0);
	pszBuf = new wchar_t[nBufSize];
	int bytes = MultiByteToWideChar(CP_ACP, 0, lpszCharStr, -1, (LPWSTR)pszBuf, nBufSize);

	if ( bytes == 0 )
		return ( NULL );

	return ( pszBuf );
}

//Converty WideChar to MultiByte
const char* dbAx::W2M(LPCWSTR lpszWideCharStr)
{
	size_t nl = wcslen(lpszWideCharStr);
	int nLenOfBuf = WideCharToMultiByte(CP_ACP, 0, (LPWSTR)lpszWideCharStr, -1, NULL, 0, NULL, NULL);
	char *pszBuf = new char[nLenOfBuf];
	int bytes = WideCharToMultiByte(CP_ACP, 0, (LPWSTR)lpszWideCharStr, -1, (LPSTR)pszBuf, nLenOfBuf, NULL, NULL);

	if ( bytes == 0 )
		return ( NULL );

	return ( pszBuf );
}

//Generate a GUID formatted string
#ifdef GEN_GUID_STR
HRESULT dbAx::GenGUIDStr(CString& szGUID)
{
  GUID m_guid = GUID_NULL;
	HRESULT hr = ::UuidCreate(&m_guid);

  if ( SUCCEEDED(hr) )
    szGUID.Format(_T("{%08lX-%04X-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X}"),
	  	m_guid.Data1, m_guid.Data2, m_guid.Data3,
		  m_guid.Data4[0], m_guid.Data4[1], m_guid.Data4[2], m_guid.Data4[3],
		  m_guid.Data4[4], m_guid.Data4[5], m_guid.Data4[6], m_guid.Data4[7]);

  return ( hr );
}
#endif

///////////////////////////////////////////////////////////////
//	Construction

CAxConnection::CAxConnection()
{
  m_piConnection = NULL;
  m_dwEvents = 0;
}

CAxConnection::CAxConnection(LPCTSTR lpszConnectStr)
{
  m_strConnect = lpszConnectStr;
  m_piConnection = NULL;
}

CAxConnection::~CAxConnection()
{
  if ( _IsOpen() )
    Close();

  DropConnection(this);

  if ( m_piConnection )
  {
    HRESULT hr = m_piConnection->Release();
	  if FAILED( hr )
		  ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::Close"), hr);
  }

	m_piConnection = NULL;
}

///////////////////////////////////////////////////////////////
//	Initialization
void CAxConnection::Create()
{
	//Create object instance
	try
	{
		HRESULT hr =  CoCreateInstance(CLSID_CADOConnection, NULL, 
			CLSCTX_INPROC_SERVER, IID_IADOConnection, (LPVOID *)&m_piConnection);

		if FAILED( hr )
      ThrowAxException(AXLIB_ERROR_INIT, _T("CAxConnection::Create"), hr);
    
    //Validate connection
		VALID_ADO_OBJECT(m_piConnection);
    m_AxConnections.push_back(this);
	}
	catch ( CAxException *e)
	{
		if ( m_piConnection )
		{
			m_piConnection->Release();
			m_piConnection = NULL;
		}

		//Throw generated exception back to client's catch block
		throw e;
	}
}

///////////////////////////////////////////////////////////////
//	AxLib Specific

void CAxConnection::_ClearConnectionEvents()
{
  if ( m_piConnection == NULL || m_dwEvents == 0 )
    return;

  IConnectionPointContainer *pCPC = NULL;
  IConnectionPoint          *pCP = NULL;
  HRESULT hr = m_piConnection->QueryInterface(__uuidof(IConnectionPointContainer),
    (LPVOID*)&pCPC);

  if ( SUCCEEDED(hr) )
  {
    hr = pCPC->FindConnectionPoint(__uuidof(ConnectionEvents), &pCP);
    pCPC->Release();
    if ( SUCCEEDED(hr) )
    {
      hr = pCP->Unadvise(m_dwEvents);
      pCP->Release();
      m_dwEvents--;
    }
  }

  if FAILED( hr ) 
	  ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::_ClearConnectionEvents"), hr);
}

bool CAxConnection::_IsOpen()
{
  if ( m_piConnection == NULL )
    return (FALSE);

	VALID_ADO_OBJECT(m_piConnection);

  long lState;
  HRESULT hr =  m_piConnection->get_State(&lState);
  if FAILED( hr )
    ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::_IsOpen"), hr);

  return (lState == adStateOpen);
}

void CAxConnection::_SetConnectionEvents(CAxConnectionEvents* pEvents)
{
  IConnectionPointContainer *pCPC = NULL;
  IConnectionPoint          *pCP = NULL;
  HRESULT hr = m_piConnection->QueryInterface(__uuidof(IConnectionPointContainer),
    (LPVOID*)&pCPC);

  if ( SUCCEEDED(hr) )
  {
    hr = pCPC->FindConnectionPoint(__uuidof(ConnectionEvents), &pCP);
    pCPC->Release();
    if ( SUCCEEDED(hr) )
    {
      hr = pCP->Advise(pEvents, &m_dwEvents);
      pCP->Release();
    }
  }

  if FAILED( hr ) 
    ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::_SetConnectionEvents"), hr);
}

bool CAxConnection::_SupportsTransactions()
{
  ADOProperties *pProps = Properties();
  ADOProperty *pProp = NULL;
  bool bSupports = FALSE;

  if ( pProps )
  {
    if FAILED( pProps->get_Item(_variant_t(_T("Transaction DDL")), &pProp) )
      ThrowAxException(AXLIB_ERROR_NONE);

    _variant_t varValue;
    if FAILED( pProp->get_Value(&varValue) )
      ThrowAxException(AXLIB_ERROR_NONE);

    bSupports = (varValue.lVal == 8);
  }

  return (bSupports);
}

///////////////////////////////////////////////////////////////
//	Collections

ADOErrors* CAxConnection::Errors()
{
	VALID_ADO_OBJECT(m_piConnection);
  ADOErrors* pErrors;

  HRESULT hr = m_piConnection->get_Errors(&pErrors);
  if FAILED( hr )
		ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::Errors"), hr);

  return (pErrors);
}

ADOProperties* CAxConnection::Properties()
{
	VALID_ADO_OBJECT(m_piConnection);
  ADOProperties *pProps;

  HRESULT hr = m_piConnection->get_Properties(&pProps);
  if FAILED( hr )
		ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::Properties"), hr);

  return (pProps);
}

///////////////////////////////////////////////////////////////
//	Methods

void CAxConnection::BeginTrans(long *plTransLevel)
{
	VALID_ADO_OBJECT(m_piConnection);

  HRESULT hr = m_piConnection->BeginTrans(plTransLevel);
	if FAILED( hr )
		ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::BeginTrans"), hr);
}

void CAxConnection::Cancel()
{
	VALID_ADO_OBJECT(m_piConnection);

  HRESULT hr = m_piConnection->Cancel();
	if FAILED( hr )
		ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::Cancel"), hr);
}

void CAxConnection::Close()
{
	VALID_ADO_OBJECT(m_piConnection);

  //Release connection events
  _ClearConnectionEvents();

  HRESULT hr = m_piConnection->Close();
	if FAILED( hr )
		ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::Close"), hr);
}

void CAxConnection::CommitTrans()
{
	VALID_ADO_OBJECT(m_piConnection);

  HRESULT hr = m_piConnection->CommitTrans();
	if FAILED( hr )
		ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::CommitTrans"), hr);
}

void CAxConnection::Execute(LPCTSTR lpszCmdText, 
                                  long* lpRecsAffected,
                                  CommandTypeEnum eOption)
{
	VALID_ADO_OBJECT(m_piConnection);
	VARIANT vRecs;
	bstr_t bsCmdText(lpszCmdText);

	_ASSERT (bsCmdText.length() > 0);

	if ( lpRecsAffected != NULL )
		vRecs.vt = VT_I4;
	else
		vRecs.vt = VT_EMPTY;
	
  HRESULT hr = m_piConnection->Execute(bsCmdText, &vRecs, eOption, NULL);
	if FAILED( hr )
		ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::Execute"), hr);

	if ( lpRecsAffected != NULL )
		*lpRecsAffected = vRecs.lVal;
}

void CAxConnection::Open(LPCTSTR lpszConnectStr, LPCTSTR lpszUserID, 
                         LPCTSTR lpszPwd, ConnectOptionEnum eConnect)
{
	VALID_ADO_OBJECT(m_piConnection);

  if (_tcslen(lpszConnectStr) == 0 )
		_ASSERT (m_strConnect.GetLength() > 0);
	else
		m_strConnect = lpszConnectStr;

  HRESULT hr = m_piConnection->Open(bstr_t((LPCTSTR)m_strConnect), 
    _bstr_t(lpszUserID), _bstr_t(lpszPwd), eConnect);
	if FAILED( hr )
		ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::Open"), hr);
}

void CAxConnection::RollbackTrans()
{
	VALID_ADO_OBJECT(m_piConnection);

  HRESULT hr = m_piConnection->RollbackTrans();
	if FAILED( hr )
		ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::RollbackTrans"), hr);
}


///////////////////////////////////////////////////////////////
//	Properties

XactAttributeEnum CAxConnection::Attributes(long lAttribute)
{
	VALID_ADO_OBJECT(m_piConnection);
  HRESULT hr = S_OK;

  if ( lAttribute > 0 )
  {
    hr = m_piConnection->put_Attributes(lAttribute);
	  if FAILED( hr )
		ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::Attributes"), hr);
  }

  long lAttributes;

  hr = m_piConnection->get_Attributes(&lAttributes);
  if FAILED( hr )
		ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::Attributes"), hr);

  return ((XactAttributeEnum)lAttributes);
}

long CAxConnection::CommandTimeout(long lSeconds)
{
	VALID_ADO_OBJECT(m_piConnection);
  HRESULT hr = S_OK;

  if ( lSeconds >= 0 )
  {
    hr = m_piConnection->put_CommandTimeout(lSeconds);
	  if FAILED( hr )
		ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::CommandTimeout"), hr);
  }

  long lTimeout = 0;
  hr = m_piConnection->get_CommandTimeout(&lTimeout);
	if FAILED( hr )
		ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::CommandTimeout"), hr);

	return (lTimeout);
}

LPCTSTR CAxConnection::ConnectionString(LPCTSTR lpszConnectStr)
{
	VALID_ADO_OBJECT(m_piConnection);
  HRESULT hr = S_OK;

  if ( lpszConnectStr )
  {
    hr = m_piConnection->put_ConnectionString(bstr_t(lpszConnectStr));
	  if FAILED( hr )
		  ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::ConnectionString"), hr);
  }

  BSTR bstrConnect;
  hr = m_piConnection->get_ConnectionString(&bstrConnect);
	if FAILED( hr )
		 ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::ConnectionString"), hr);

  return (CString(bstrConnect).operator LPCTSTR());
}

long CAxConnection::ConnectionTimeout(long lSeconds)
{
	VALID_ADO_OBJECT(m_piConnection);
  HRESULT hr = S_OK;

  if ( lSeconds >= 0 )
  {
    hr = m_piConnection->put_ConnectionTimeout(lSeconds);
	  if FAILED( hr )
		  ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::ConnectionTimeout"), hr);
  }

  long lTimeout = 0;
  hr = m_piConnection->get_ConnectionTimeout(&lTimeout);
	if FAILED( hr )
	  ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::ConnectionTimeout"), hr);

	return (lTimeout);
}

CursorLocationEnum CAxConnection::CursorLocation(long lCursorLocation)
{
	VALID_ADO_OBJECT(m_piConnection);

  if ( (lCursorLocation < adUseNone || lCursorLocation > adUseClientBatch) && 
    lCursorLocation != -1 )
    ThrowAxException(AXLIB_ERROR_ENUM, _T("CAxConnection::CursorLocation"));

  HRESULT hr = S_OK;
  if ( lCursorLocation != -1)
  {
    hr = m_piConnection->put_CursorLocation((CursorLocationEnum)lCursorLocation);
	  if FAILED( hr )
	    ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::CursorLocation"), hr);
  }

  CursorLocationEnum curLoc;

  hr = m_piConnection->get_CursorLocation(&curLoc);
	if FAILED( hr )
	  ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::CursorLocation"), hr);

	return (curLoc);
}

LPCTSTR CAxConnection::DefaultDatabase(LPCTSTR lpszDatabase)
{
	VALID_ADO_OBJECT(m_piConnection);
  HRESULT hr = S_OK;

  if ( lpszDatabase )
  {
    hr = m_piConnection->put_DefaultDatabase(bstr_t(lpszDatabase));
	  if FAILED( hr )
	    ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::DefaultDatabase"), hr);
  }

	BSTR bstrDatabase;
  hr = m_piConnection->get_DefaultDatabase(&bstrDatabase);
	if FAILED( hr )
	  ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::DefaultDatabase"), hr);

#ifdef _UNICODE
  return (_bstr_t(bstrDatabase).operator const wchar_t *());
#else
  return (_bstr_t(bstrDatabase).operator const char *());
#endif
}

IsolationLevelEnum CAxConnection::IsolationLevel(IsolationLevelEnum eIsoLevel)
{
	VALID_ADO_OBJECT(m_piConnection);
  HRESULT hr = S_OK;

  if ( eIsoLevel != adXactUnspecified )
  {
    hr = m_piConnection->put_IsolationLevel(eIsoLevel);
	  if FAILED( hr )
	    ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::LsolationLevel"), hr);
  }

	IsolationLevelEnum isoLevel;

  hr = m_piConnection->get_IsolationLevel(&isoLevel);
	if FAILED( hr )
	  ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::LsolationLevel"), hr);

	return (isoLevel);
}

ConnectModeEnum CAxConnection::Mode(long lConMode)
{
	VALID_ADO_OBJECT(m_piConnection);
  HRESULT hr = S_OK;

  if ( lConMode >= 0 )
  {
    hr = m_piConnection->put_Mode((ConnectModeEnum)lConMode);
	  if FAILED( hr )
	    ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::Mode"), hr);
  }

	ConnectModeEnum eConMode;
  hr = m_piConnection->get_Mode(&eConMode);
	if FAILED( hr )
	  ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::Mode"), hr);

	return (eConMode);
}

LPCTSTR CAxConnection::Provider(LPCTSTR lpszProvider)
{
	VALID_ADO_OBJECT(m_piConnection);
  HRESULT hr = S_OK;
  
  if ( lpszProvider )
  {
    hr = m_piConnection->put_Provider(bstr_t(lpszProvider));
	  if FAILED( hr )
	    ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::Provider"), hr);
  }

	BSTR bstrProvider;
  hr = m_piConnection->get_Provider(&bstrProvider);
	if FAILED( hr )
	  ThrowAxException(AXLIB_ERROR_NONE, _T("CAxConnection::Provider"), hr);

	return (CString(bstrProvider).operator LPCTSTR());
}

ObjectStateEnum CAxConnection::State()
{
	VALID_ADO_OBJECT(m_piConnection);
	long lState;

	if FAILED( m_piConnection->get_State(&lState) )
		ThrowAxException(AXLIB_ERROR_NONE);

	return ((ObjectStateEnum)lState);
}

LPCTSTR CAxConnection::Version()
{
	VALID_ADO_OBJECT(m_piConnection);
	BSTR bstrVersion;

	if FAILED( m_piConnection->get_Version(&bstrVersion) )
		ThrowAxException(AXLIB_ERROR_NONE);

	return (CString(bstrVersion).operator LPCTSTR());
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美另类videos死尸| 日韩欧美国产麻豆| 成人免费在线观看入口| 99精品久久只有精品| 亚洲欧洲精品天堂一级| 久久综合久久综合久久| 91视频精品在这里| 免费美女久久99| 国产精品天干天干在观线| 欧美日韩精品欧美日韩精品一 | 亚洲天堂免费看| 欧美日韩不卡在线| 欧美人伦禁忌dvd放荡欲情| 欧美精品v国产精品v日韩精品| 欧美久久久久久蜜桃| 日韩视频一区在线观看| 色就色 综合激情| 韩日精品视频一区| 亚洲免费看黄网站| 精品国产凹凸成av人导航| 欧美性欧美巨大黑白大战| 国产精品综合二区| 亚洲图片欧美视频| 国产色一区二区| 欧美最猛性xxxxx直播| 国产精品亚洲一区二区三区妖精| 国产精品一区二区久久不卡| 成人午夜大片免费观看| 久久精品国产**网站演员| 一区二区三区在线视频播放| 国产欧美日韩在线| 精品粉嫩超白一线天av| 国产精品传媒入口麻豆| 国产亚洲女人久久久久毛片| 国产精品欧美一级免费| 亚洲国产裸拍裸体视频在线观看乱了| 日韩成人伦理电影在线观看| 亚洲成人av一区二区| 夜夜揉揉日日人人青青一国产精品 | 欧美mv日韩mv国产网站| 91精品国产色综合久久不卡电影 | 国产二区国产一区在线观看 | 欧美一区二区久久久| 久久中文娱乐网| 亚洲精品老司机| 一区二区视频免费在线观看| 青青草97国产精品免费观看 | 国产三级精品三级在线专区| 亚洲另类一区二区| 经典三级视频一区| 卡一卡二国产精品| 精品国产麻豆免费人成网站| 久久久.com| 亚洲一区成人在线| 国产精品久久久99| 婷婷国产在线综合| 午夜精品福利一区二区蜜股av| 精品一区二区三区在线播放视频| 91亚洲精品乱码久久久久久蜜桃 | 日韩精品影音先锋| 亚洲三级在线免费| 精品一区二区三区免费视频| 色成年激情久久综合| 久久久99精品久久| 欧美aa在线视频| 欧美综合一区二区| 国产精品国产自产拍高清av| 久久精品噜噜噜成人av农村| 欧美专区在线观看一区| 国产精品婷婷午夜在线观看| 老司机精品视频导航| 欧美性色欧美a在线播放| 国产精品大尺度| 国产成人a级片| 337p日本欧洲亚洲大胆精品| 日韩中文字幕91| 日韩亚洲欧美综合| 国产精品久久精品日日| 精久久久久久久久久久| 欧美人伦禁忌dvd放荡欲情| 亚洲欧美日韩综合aⅴ视频| 国产在线国偷精品产拍免费yy| 国产成人高清在线| 精品国产污网站| 亚洲国产精品综合小说图片区| av欧美精品.com| 欧美日韩国产高清一区二区 | 亚洲一区二区美女| 91丨porny丨国产| 中文一区二区在线观看| 亚洲免费看黄网站| 95精品视频在线| 国产精品网曝门| 成人三级伦理片| 国产亚洲综合色| 国产在线视频不卡二| 精品日韩av一区二区| 男人的天堂久久精品| 日韩一区二区三区高清免费看看| 亚洲国产视频直播| 欧美丝袜自拍制服另类| 自拍视频在线观看一区二区| 精品一区二区三区免费| 日韩一级视频免费观看在线| 午夜精品久久久久久不卡8050| 欧美三级韩国三级日本三斤| 91精品国产品国语在线不卡| 偷拍自拍另类欧美| 91精品久久久久久蜜臀| 中文字幕一区二区三中文字幕| 国产福利一区二区三区视频在线| 久久亚洲免费视频| 国产乱人伦偷精品视频免下载| 久久综合九色综合久久久精品综合| 加勒比av一区二区| 日本一区免费视频| 色综合久久久久久久| 久久视频一区二区| 国产91精品在线观看| 欧美一级二级在线观看| 男男视频亚洲欧美| 亚洲精品在线观看网站| 国产乱子轮精品视频| 国产精品麻豆网站| 色偷偷88欧美精品久久久| 亚洲成av人片| 欧美mv日韩mv| 丁香五精品蜜臀久久久久99网站| 亚洲天堂成人在线观看| 欧美性大战xxxxx久久久| 日韩电影在线观看电影| 色综合久久久久综合99| 亚洲黄一区二区三区| 欧美精品亚洲二区| 久久99久国产精品黄毛片色诱| 久久久另类综合| 免费久久精品视频| 中文字幕 久热精品 视频在线| 色呦呦日韩精品| 日本欧美大码aⅴ在线播放| 国产视频亚洲色图| 欧美在线短视频| 国产在线精品一区二区不卡了| 中文字幕人成不卡一区| 在线成人小视频| 成人黄页在线观看| 中文字幕二三区不卡| 欧美在线制服丝袜| 久久99精品久久久久久久久久久久 | 国产成人免费视频网站| 一区二区三区精品| 久久久久久久久久久电影| 91精品91久久久中77777| 日韩国产欧美三级| 国产精品久久久久久久久久久免费看| 欧美性猛交xxxx黑人交| 国产sm精品调教视频网站| 一区二区三区欧美亚洲| 26uuu亚洲| 欧美午夜精品电影| 成人免费观看视频| 偷拍一区二区三区四区| 久久久亚洲高清| 欧美日韩在线观看一区二区| 夫妻av一区二区| 日韩高清在线电影| 亚洲欧洲日韩综合一区二区| 日韩一区二区电影在线| 色天使色偷偷av一区二区| 国产一区高清在线| 午夜伦理一区二区| 中文字幕在线不卡| 2020日本不卡一区二区视频| 欧美在线999| 97久久超碰国产精品电影| 久久99精品网久久| 丝袜美腿亚洲色图| 亚洲欧美乱综合| 国产精品久久久久一区| 精品乱人伦小说| 欧美伦理影视网| 色老汉av一区二区三区| 成人免费观看视频| 国产乱对白刺激视频不卡| 免费看黄色91| 日韩在线a电影| 亚洲福利视频一区| 一区二区三区在线免费观看| 国产精品午夜免费| 国产网站一区二区| 欧美精品一区二区三区四区| 777午夜精品视频在线播放| 在线观看区一区二| 成人高清视频免费观看| 91毛片在线观看| 精品日韩99亚洲| 欧美日本在线播放| 欧美色精品在线视频| 在线精品国精品国产尤物884a| 一本大道综合伊人精品热热|