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

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

?? database.cpp

?? wince下對sqlserver數(shù)據(jù)庫的操作,增刪改操作,單進(jìn)程單線程
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
		//Send an error-specific message and do error handling.
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		goto Exit;
	}
	hr = pIDBCrtCmd->CreateCommand(NULL, IID_ICommandText, (IUnknown**)
		&pICmdText);
	if (FAILED(hr))
	{
		//Send an error-specific message and do error handling.
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		goto Exit;
	}

	// Request the ability to use the IRowsetPosition interface.
	rowsetpropset[0].cProperties     = 1;
	rowsetpropset[0].guidPropertySet = DBPROPSET_ROWSET;
	rowsetpropset[0].rgProperties    = rowsetprop;

	rowsetprop[0].dwPropertyID   = DBPROP_CANFETCHBACKWARDS;
	rowsetprop[0].dwOptions      = DBPROPOPTIONS_REQUIRED;
	rowsetprop[0].vValue.vt      = VT_BOOL;
	rowsetprop[0].vValue.boolVal = VARIANT_TRUE;

	// Set the query text for the command.
	hr = pICmdText->SetCommandText(DBGUID_SQL, pSql); 
	if (FAILED(hr))
	{
		//Send an error-specific message and do error handling.
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		goto Exit;
	}

	hr = pICmdText->QueryInterface(IID_ICommandProperties, (void**) &pICmdProps);
	if (FAILED(hr))
	{
		//Send an error-specific message and do error handling.
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		goto Exit;
	}
	hr = pICmdProps->SetProperties(1, rowsetpropset);
	if (FAILED(hr))
	{
		//Send an error-specific message and do error handling.
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		goto Exit;
	}

	// Creates an IRowsetPosition object for the returned rowset.
	hr = pICmdText->Execute(NULL, IID_IRowsetPosition, NULL, NULL,
		(IUnknown**)&pIRowsetPos);
	if (FAILED(hr))
	{
		//Send an error-specific message and do error handling.
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		goto Exit;
	} // Get a count of the number or rows returned in the rowset.

	hr = pIRowsetPos->GetRecordCount(DB_NULL_HCHAPTER, &cbRecordCount);
	if (FAILED(hr))
	{
		//Send an error-specific message and do error handling.
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		goto Exit;
	} 

	// Do something here with the aquired row count information.

Exit: 
	if(pIRowsetPos)
		pIRowsetPos->Release();
	if(pICmdProps)
		pICmdProps->Release();
	if(pIDBCrtCmd)
		pIDBCrtCmd->Release();
	if(pICmdText)
		pICmdText->Release();
	if(pIRowset)
		pIRowset->Release();
	if(FAILED(hr))
	{
		return ERR_BUS_SQLEXE;
	}else
		return cbRecordCount;
}
HRESULT CDataBase::PrintErrorInfo(REFIID riid, IUnknown *pComponent)
{
	IErrorInfo * pErrorInfo = NULL;
	IErrorInfo * pErrorInfoRec = NULL;
	IErrorRecords * pErrorRecords = NULL;
	ISupportErrorInfo * pSupportErrorInfo = NULL;
	HRESULT hr = E_FAIL;
	ULONG i, ulNumErrorRecs;
	ERRORINFO ErrorInfo;

	memset (&ErrorInfo, '\0', sizeof(ERRORINFO));

	hr = pComponent->QueryInterface(IID_ISupportErrorInfo, (LPVOID FAR*)
	&pSupportErrorInfo);
	if (SUCCEEDED(hr))
	{
		hr = pSupportErrorInfo->InterfaceSupportsErrorInfo(riid);
		if(hr == S_OK)
		{
			hr = GetErrorInfo(0, &pErrorInfo);
			if (!pErrorInfo)
			{
			hr = pSupportErrorInfo->Release();
			return (hr);
			}

			hr = pErrorInfo->QueryInterface(IID_IErrorRecords, (LPVOID FAR*)
			&pErrorRecords);
			hr = pErrorRecords->GetRecordCount(&ulNumErrorRecs);

			//If no error records but we are expecting one, then fail here
			if (0 == ulNumErrorRecs)
			{
			hr = pSupportErrorInfo->Release();
			hr = pErrorRecords->Release();
			return (hr);
			}
		}else 
			return (hr);
	}else 
		return (hr);

	for (i = 0; i<ulNumErrorRecs;i++)
	{
	//	GetBasicErrorInfo(i, &ErrorInfo);

		hr = pErrorRecords->GetErrorInfo(i, NULL, &pErrorInfoRec);
		BSTR bstrDescriptionOfError = NULL;
		BSTR bstrSourceOfError = NULL;

		hr = pErrorInfoRec->GetDescription(&bstrDescriptionOfError);
		hr = pErrorInfoRec->GetSource(&bstrSourceOfError);
		MessageBox(NULL,bstrSourceOfError, L"Casper", MB_OK);
	}
	return (hr);
}
/*
功能:根據(jù)指定的業(yè)務(wù)表及查詢條件取記錄
參數(shù):
pBusTableStruct pBusStr--查詢的業(yè)務(wù)表的結(jié)構(gòu)
WCHAR *wcWhere --要查詢的條件
RetResultStruct **ppResult--要返回的查詢記錄指針的指針
返回:int 
	< 0 --錯誤代碼
	
	  >=0--查詢結(jié)果記錄個數(shù)
編寫人:呂黃梁
時間:2004-12-23
*/
int CDataBase::GetCombRows(pBusTableStruct pBusStr,WCHAR *wcSql,RetResultStruct **ppResult)
{
	HRESULT     hr            = NOERROR;  
	DBBINDING			*prgBinding			= NULL;				// Binding used to create accessor
	HROW				rghRows[1];								// Array of row handles obtained from the rowset object
	HROW				*prghRows			= rghRows;			// Row handle(s) pointer
//	DBID				TableID;								// Used to open/create table
//	DBPROPSET   dbpropset[1]; 
//	DBPROP      dbprop[1]; 
	DBPROPSET   rowsetpropset[1]; 
	DBPROP      rowsetprop[2]; 
//	ULONG       cbRecordCount;
	DBCOLUMNINFO		*pDBColumnInfo		= NULL;				// Record column metadata
	BYTE				*pData				= NULL;				// record data
	WCHAR				*pStringsBuffer		= NULL;
	DWORD				dwBindingSize		= 0;
	DWORD				dwIndex				= 0;
	DWORD				dwOffset			= 0;
//	DWORD				dwOrdinal			= 0;
	ULONG				ulNumCols;
	WCHAR				wcTemp[CC_MAX_FIELDS_LEN];
	int nCount=0,i=0,index=0;
	int nSizeStr=0;
	char *pRowStr;
	RetResultStruct *pCurResult,*pNextResult;
	// Provider interfaces
	IRowsetPosition *    pIRowsetPos       = NULL;
	ICommandProperties * pICmdProps        = NULL;
	IDBCreateCommand *   pIDBCrtCmd        = NULL;
	ICommandText *       pICmdText         = NULL;
	IRowset *            pIRowset          = NULL;
	IAccessor			*pIAccessor			= NULL;				// Provider Interface Pointer
	ILockBytes			*pILockBytes		= NULL;				// Provider Interface Pointer
	IColumnsInfo		*pIColumnsInfo		= NULL;				// Provider Interface Pointer
	HACCESSOR			hAccessor			= DB_NULL_HACCESSOR;// Accessor handle

	// Initialize the environment.
	if (NULL == m_pIDBCreateSession)
	{
		ASSERT(0);
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		return ERR_PROG_NOTOPEN;//編程錯誤
	}
	hr = m_pIDBCreateSession->CreateSession(NULL, IID_IDBCreateCommand,
		(IUnknown**) &pIDBCrtCmd);
	if (FAILED(hr))
	{
		//Send an error-specific message and do error handling.
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		goto Exit;
	}
	hr = pIDBCrtCmd->CreateCommand(NULL, IID_ICommandText, (IUnknown**)
		&pICmdText);
	if (FAILED(hr))
	{
		//Send an error-specific message and do error handling.
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		goto Exit;
	}

	// Request the ability to use the IRowsetPosition interface.
	rowsetpropset[0].cProperties     = 1;
	rowsetpropset[0].guidPropertySet = DBPROPSET_ROWSET;
	rowsetpropset[0].rgProperties    = rowsetprop;

	rowsetprop[0].dwPropertyID   = DBPROP_CANFETCHBACKWARDS;
	rowsetprop[0].dwOptions      = DBPROPOPTIONS_REQUIRED;
	rowsetprop[0].vValue.vt      = VT_BOOL;
	rowsetprop[0].vValue.boolVal = VARIANT_TRUE;

	// Set the query text for the command.
//	WCHAR SqlBuf[1024];
//	swprintf(SqlBuf,L"select * from %s %s;",pBusStr->Name,wcWhere);
	hr = pICmdText->SetCommandText(DBGUID_SQL, wcSql); 
	if (FAILED(hr))
	{
		//Send an error-specific message and do error handling.
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		goto Exit;
	}
/*
	hr = pICmdText->QueryInterface(IID_ICommandProperties, (void**) &pICmdProps);
	if (FAILED(hr))
	{
		//Send an error-specific message and do error handling.
		goto Exit;
	}
	hr = pICmdProps->SetProperties(1, rowsetpropset);
	if (FAILED(hr))
	{
		//Send an error-specific message and do error handling.
		goto Exit;
	}
*/
	// Creates an IRowsetPosition object for the returned rowset.

	hr = pICmdText->Execute(NULL, IID_IRowset, NULL, NULL,
		(IUnknown**)&pIRowset);
	if (FAILED(hr))
	{
		//Send an error-specific message and do error handling.
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		goto Exit;
	} // Get a count of the number or rows returned in the rowset.

    // Get IColumnsInfo interface
	//
    hr = pIRowset->QueryInterface(IID_IColumnsInfo, (void **)&pIColumnsInfo);
	if(FAILED(hr))
	{
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		goto Exit;
	}

	// Get the column metadata 
	//
    hr = pIColumnsInfo->GetColumnInfo(&ulNumCols, &pDBColumnInfo, &pStringsBuffer);
	if(FAILED(hr) || 0 == ulNumCols)
	{
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		goto Exit;
	}

    // Create a DBBINDING array.
	//

	dwBindingSize = pBusStr->Num;//sizeof(pwszEmployees)/sizeof(pwszEmployees[0]);
	prgBinding = (DBBINDING*)CoTaskMemAlloc(sizeof(DBBINDING)*dwBindingSize);
	if (NULL == prgBinding)
	{
		hr = E_OUTOFMEMORY;
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		goto Exit;
	}

	// Set initial offset for binding position
	//
	dwOffset = 0;

	// Prepare structures to create the accessor
	//
    for (dwIndex = 0; dwIndex < dwBindingSize; ++dwIndex)
    {
	/*	if (!GetColumnOrdinal(pDBColumnInfo, ulNumCols, pwszEmployees[dwIndex], &dwOrdinal))
		{
			hr = E_FAIL;
			goto Exit;
		}
	*/
		// Prepare structures to create the accessor
		//
		prgBinding[dwIndex].iOrdinal	= pDBColumnInfo[dwIndex].iOrdinal;
		prgBinding[dwIndex].dwPart		= DBPART_VALUE | DBPART_STATUS | DBPART_LENGTH;
		prgBinding[dwIndex].obLength	= dwOffset;                                     
		prgBinding[dwIndex].obStatus	= prgBinding[dwIndex].obLength + sizeof(ULONG);  
		prgBinding[dwIndex].obValue		= prgBinding[dwIndex].obStatus + sizeof(DBSTATUS);
		prgBinding[dwIndex].pTypeInfo	= NULL;
		prgBinding[dwIndex].pBindExt	= NULL;
		prgBinding[dwIndex].dwMemOwner	= DBMEMOWNER_CLIENTOWNED;
		prgBinding[dwIndex].dwFlags		= 0;
		prgBinding[dwIndex].bPrecision	= pDBColumnInfo[dwIndex].bPrecision;
		prgBinding[dwIndex].bScale		= pDBColumnInfo[dwIndex].bScale;

		switch(pDBColumnInfo[dwIndex].wType)
		{
		case DBTYPE_BYTES:		// Column "Photo" binding (BLOB) 
			// Set up the DBOBJECT structure.
			//
			ASSERT(0);
			break;

		case DBTYPE_WSTR:
			prgBinding[dwIndex].pObject		= NULL;
			prgBinding[dwIndex].wType		= pDBColumnInfo[dwIndex].wType;
			prgBinding[dwIndex].cbMaxLen	= sizeof(WCHAR)*(pDBColumnInfo[dwIndex].ulColumnSize + 1);	// Extra buffer for null terminator 
			break;

		default:
			prgBinding[dwIndex].pObject		= NULL;
			prgBinding[dwIndex].wType		= pDBColumnInfo[dwIndex].wType;
			prgBinding[dwIndex].cbMaxLen	= pDBColumnInfo[dwIndex].ulColumnSize; 
			break;
		}

		// Calculate new offset
		// 
		dwOffset = prgBinding[dwIndex].obValue + prgBinding[dwIndex].cbMaxLen;

		// Properly align the offset
		//
		dwOffset = ROUND_UP(dwOffset, COLUMN_ALIGNVAL);
	}

	// Get IAccessor interface
	//
	hr = pIRowset->QueryInterface(IID_IAccessor, (void**)&pIAccessor);
	if(FAILED(hr))
	{
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		goto Exit;
	}

    // Create accessor.
	//
    hr = pIAccessor->CreateAccessor(DBACCESSOR_ROWDATA, 
									dwBindingSize, 
									prgBinding,
									0,
									&hAccessor,
									NULL);
    if(FAILED(hr))
    {
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
        goto Exit;
    }

	// Allocate data buffer for seek and retrieve operation.
	//
	pData = (BYTE*)CoTaskMemAlloc(dwOffset);
	if (NULL == pData)
	{
		hr = E_OUTOFMEMORY;
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		goto Exit;
	}

    // Set data buffer to zero
    //
	// 取數(shù)據(jù)
    // Retrieve a row handle for the row resulting from the seek
    //計(jì)算結(jié)構(gòu)長度
	pBusFieldStruct pField;
	pField=pBusStr->pBusFields;
	for(i=0;i<pBusStr->Num;i++,pField++)
	{
		nSizeStr+=pField->Length;
	}
	ULONG cRowsObtained;
    hr = pIRowset->GetNextRows(DB_NULL_HCHAPTER, 0, 1, &cRowsObtained, &prghRows);
	if(FAILED(hr))
	{
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		goto Exit;	
	}
	while(DB_S_ENDOFROWSET != hr)
	{
		memset(pData, 0, dwOffset);
		hr = pIRowset->GetData(prghRows[0], hAccessor, pData);
		if (FAILED(hr))
		{
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
			goto Exit;
		}
		pNextResult =(RetResultStruct*)malloc(sizeof(RetResultStruct));
		memset(pNextResult,0,sizeof(RetResultStruct));
		pNextResult->nSize=nSizeStr;
		pNextResult->pBuf = malloc(nSizeStr);
		memset(pNextResult->pBuf,0,nSizeStr);
		if(nCount==0)
		{
			*ppResult = pNextResult;
			pCurResult=pNextResult;
		}else
		{
			pCurResult->pNext=pNextResult;
			pCurResult=pNextResult;
		}
		pField=pBusStr->pBusFields;
		pRowStr=(char*)pCurResult->pBuf;
#ifdef DEBUG
//		room_info_struct *pRoom=(room_info_struct*)pCurResult->pBuf;
#endif
		for(index=0;index<pBusStr->Num;index++,pRowStr+=pField->Length,pField++)
		{//取每個字段的值
			switch(pDBColumnInfo[index].wType)
			{
			case DBTYPE_BYTES:		// Column "Photo" binding (BLOB) 
				ASSERT(0);

			case DBTYPE_WSTR:
				memcpy(wcTemp,pData+prgBinding[index].obValue,prgBinding[index].cbMaxLen-2);
				memset(wcTemp+prgBinding[index].cbMaxLen-2,0,2);
				WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,wcTemp,-1,pRowStr,pField->Length,NULL,NULL);
				break;
			default:
				memcpy(pRowStr,pData+prgBinding[index].obValue,prgBinding[index].cbMaxLen);
				break;
			}
		}


		nCount ++;
		pIRowset->ReleaseRows(1,prghRows,NULL,NULL,NULL);
		hr = pIRowset->GetNextRows(DB_NULL_HCHAPTER, 0/*nCount*/, 1, &cRowsObtained, &prghRows);
		if (FAILED(hr))
		{
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
			goto Exit;
		}


	}
Exit: 

	VariantClear(&rowsetprop[0].vValue);

    // Free allocated DBBinding memory
    //
    if (prgBinding)
    {
        CoTaskMemFree(prgBinding);
        prgBinding = NULL;
    }

    // Free allocated column info memory
    //
    if (pDBColumnInfo)
    {
        CoTaskMemFree(pDBColumnInfo);
        pDBColumnInfo = NULL;
    }
    if (pStringsBuffer)
    {
        CoTaskMemFree(pStringsBuffer);
        pStringsBuffer = NULL;
    }
	

    // Free data record buffer
    //
	if (pData)
	{
        CoTaskMemFree(pData);
		pData = NULL;
	}

	if(pIAccessor)
	{
		pIAccessor->ReleaseAccessor(hAccessor, NULL); 
		pIAccessor->Release();
	}

	if (pIColumnsInfo)
	{
		pIColumnsInfo->Release();
	}


//	pIRowset->ReleaseRows(1,rghRows,NULL,NULL,NULL);
	if (prghRows)
	{
     //   CoTaskMemFree(prghRows);
      //  prghRows = NULL;
	}

	if(pIRowset)
	{
		pIRowset->Release();
	}

	if(pICmdText)
		pICmdText->Release();
	if(pIDBCrtCmd)
		pIDBCrtCmd->Release();


	if(FAILED(hr))
	{
		return ERR_BUS_SQLEXE;
	}else
		return nCount;
}

void CDataBase::ReplaceYinhao(WCHAR *p)
{
	WCHAR *ptemp=wcschr(p,L'\'');
	while(ptemp!= NULL)
	{
		for(int i=wcslen(ptemp);i>0;i--)
		{
			*(ptemp+i)=*(ptemp+i-1);
		}
		ptemp=wcschr(ptemp+2,L'\'');
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆一区二区三| 一区二区不卡在线视频 午夜欧美不卡在| 在线综合亚洲欧美在线视频| 26uuu国产一区二区三区| 最新欧美精品一区二区三区| 亚洲午夜精品一区二区三区他趣| 久久精品久久99精品久久| 色婷婷综合视频在线观看| 日韩女优毛片在线| 亚洲成人动漫精品| 成人激情综合网站| 日韩欧美电影一区| 国产精品高潮呻吟| 一区二区三区日韩欧美| 波多野洁衣一区| 精品久久国产97色综合| 欧美国产激情二区三区| 日韩在线观看一区二区| 国产成人午夜视频| 欧美日韩电影在线播放| 一区二区三区日韩在线观看| 免费观看成人鲁鲁鲁鲁鲁视频| 一区二区不卡在线视频 午夜欧美不卡在| 国产99久久久国产精品| 欧美日韩一二三区| 男女激情视频一区| 色综合色综合色综合| 日韩一区二区三区四区五区六区| 91国产免费看| 亚洲欧洲在线观看av| 日本一道高清亚洲日美韩| 欧美一区二区三区系列电影| 日韩一区有码在线| 韩国欧美国产1区| 2017欧美狠狠色| 日日嗨av一区二区三区四区| 国产自产2019最新不卡| 久久久一区二区三区| 亚洲高清视频中文字幕| 欧美精品日韩一区| 亚洲夂夂婷婷色拍ww47| 国产精品一区二区在线观看网站| 久久久久久久免费视频了| 午夜精品福利一区二区三区av| 国v精品久久久网| 亚洲你懂的在线视频| 色婷婷综合久色| 国产亚洲午夜高清国产拍精品 | 亚洲一区视频在线观看视频| 欧美日韩久久一区| 亚洲成a人片在线不卡一二三区| 国产盗摄女厕一区二区三区| 在线观看欧美精品| 美女看a上一区| 精品视频在线看| 蜜桃av一区二区三区电影| 欧美三级蜜桃2在线观看| 亚洲精品国产精品乱码不99| 欧美日韩国产区一| 亚洲一区二区四区蜜桃| 精品一区二区三区久久久| 欧美亚洲综合色| 亚洲在线视频一区| 欧美xxxxxxxxx| 国产一区二区不卡在线| 精品国产一区二区在线观看| 91视频你懂的| 亚洲综合区在线| 国产成人三级在线观看| 亚洲一本大道在线| 在线不卡欧美精品一区二区三区| 国产麻豆成人精品| 欧美一区二区网站| 精品午夜久久福利影院| 日韩视频免费观看高清在线视频| 午夜精品久久久久久久99樱桃| 免费在线观看视频一区| 91在线视频播放地址| 中文字幕日本乱码精品影院| 久久超碰97人人做人人爱| 亚洲欧美中日韩| 91麻豆国产精品久久| 久久综合九色欧美综合狠狠| 国产成人在线影院| 亚洲男人都懂的| 久久蜜桃av一区精品变态类天堂| 国产suv精品一区二区6| 久久久精品免费免费| 欧美老年两性高潮| 蜜臀av亚洲一区中文字幕| 亚洲欧美一区二区三区极速播放 | 夜夜夜精品看看| 国产色综合一区| av一区二区三区四区| 丁香婷婷综合激情五月色| 亚洲色图视频网| 欧美一区二区视频网站| 欧美日韩情趣电影| 国产一区二区三区免费在线观看| 久久久久久久久久久久久夜| 色94色欧美sute亚洲线路一久| 日韩精品乱码av一区二区| 樱桃视频在线观看一区| 日韩精品一区二区三区老鸭窝| 麻豆国产欧美一区二区三区| 性做久久久久久久久| 国产日产欧产精品推荐色| 精品国产精品网麻豆系列| 91在线国内视频| 久久国产福利国产秒拍| 麻豆视频一区二区| 亚洲午夜在线电影| 一区二区不卡在线视频 午夜欧美不卡在| 日韩欧美国产精品一区| kk眼镜猥琐国模调教系列一区二区| 国产精品99久久久久久宅男| 午夜私人影院久久久久| 日韩精品一级二级| 最新日韩在线视频| 日韩女优制服丝袜电影| 久久久久久久av麻豆果冻| 欧美色精品天天在线观看视频| 欧美色国产精品| 99国产精品国产精品久久| 日本美女一区二区三区| 久久精品国产免费看久久精品| 亚洲一区中文在线| 午夜电影久久久| 亚洲乱码国产乱码精品精可以看 | 2024国产精品| 欧美精品xxxxbbbb| 欧美主播一区二区三区美女| 欧美三级资源在线| 不卡的av电影在线观看| 亚洲欧美一区二区三区孕妇| 亚洲丝袜制服诱惑| 国产欧美精品一区二区色综合| 国产精品国产三级国产普通话三级| 26uuu精品一区二区在线观看| 这里只有精品免费| 精品日韩欧美在线| 日韩欧美激情在线| 国产精品不卡一区二区三区| 亚洲国产高清在线观看视频| 成人丝袜18视频在线观看| 91日韩一区二区三区| 91免费观看国产| 日韩一区二区免费在线电影| 欧美日韩国产综合视频在线观看| 91视视频在线观看入口直接观看www | 亚洲欧美一区二区三区极速播放| 一区二区三区产品免费精品久久75| 国产精品久久毛片a| 国产亚洲精品免费| 亚洲视频一二三| 亚洲国产欧美在线| 国产成人精品在线看| 国产91高潮流白浆在线麻豆| 久久精品国产77777蜜臀| 91香蕉国产在线观看软件| 色欧美日韩亚洲| 精品国产伦一区二区三区免费| 日韩一区二区电影在线| 久久影院视频免费| 午夜成人免费电影| 麻豆91精品91久久久的内涵| 一本色道久久综合精品竹菊| 欧美亚洲动漫精品| 69精品人人人人| 亚洲日本电影在线| 亚洲成av人片在线观看无码| 99天天综合性| 欧美精品久久一区二区三区| 国产主播一区二区三区| 欧美三日本三级三级在线播放| 日韩欧美成人激情| 日韩国产高清影视| 国产成人综合在线观看| 久久久亚洲国产美女国产盗摄| 亚洲国产裸拍裸体视频在线观看乱了| 香蕉乱码成人久久天堂爱免费| 91麻豆视频网站| 欧美一激情一区二区三区| 久久久精品免费网站| 亚洲一二三四区| 国精品**一区二区三区在线蜜桃| 欧美日韩精品一区二区在线播放| 日韩欧美中文一区| 日本三级亚洲精品| 99久久精品费精品国产一区二区| 欧美在线看片a免费观看| 亚洲色图在线看| 韩国三级在线一区| 精品99999| 亚洲一区二区偷拍精品| 国产情人综合久久777777| 国产麻豆视频一区| 欧美日韩一区二区三区在线看| 亚洲亚洲精品在线观看| 丰满白嫩尤物一区二区|