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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? database.cpp

?? wince下對sqlserver數據庫的操作,增刪改操作,單進程單線程
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
}
/*
功能:根據指定的主鍵更新一條記錄
參數:
pBusTableStruct pBusStr--修改的業務表的結構
char *pRowStr --要修改的記錄的結構,所有的字段均要有
返回:int 
	< 0 --錯誤代碼
	0 --修改成功
編寫人:呂黃梁
時間:2004-12-23
*/
int CDataBase::Update(pBusTableStruct pBusStr,char *pRowStr)
{
	WCHAR SqlBuf[1000]=L"",*pSql,SqlWhere[100]=L"";
	pSql=SqlBuf;
	WCHAR sTemp[500]=L"",sTemp1[500]=L"";
	swprintf(SqlBuf,L"update %s set ",pBusStr->Name);
	char *p;
	int nVal;
	short shVal;
	pBusFieldStruct pField;
	p=pRowStr;
	BOOL bFirst=TRUE;
	pField=pBusStr->pBusFields;
	for(int i=0;i<pBusStr->Num;i++,p+=pField->Length,pField++)
	{
		if(i == pBusStr->KeyIndex1 )
		{
			ASSERT(pField->Type == DATA_INT);
			memcpy(&nVal,p,sizeof(int));
			swprintf(SqlWhere,L" where %s = %d",pField->NAME,nVal);
		//	p+=(pBusStr->pBusFields +i)->Length;
		//	if(wcscmp(pField->NAME,L"CCID") !=0)//中控默認可以更改主鍵
				continue;
		}else if( i== pBusStr->KeyIndex2)
		{
			ASSERT(pField->Type == DATA_INT);
			memcpy(&nVal,p,sizeof(int));
			swprintf(sTemp,L" and %s = %d",pField->NAME,nVal);
			wcscat(SqlWhere,sTemp);
		//	p+=(pBusStr->pBusFields +i)->Length;
			continue;
		}

		switch(pField->Type)
		{
		case DATA_INT:
			memcpy(&nVal,p,sizeof(int));
			wcscpy(sTemp,pField->NAME);
			swprintf(sTemp1,L" = %d",nVal);
			wcscat(sTemp,sTemp1);
//			swprintf(sTemp1,L"%s = %d",pField->NAME,nVal);
			break;
		case DATA_SMALLINT:
			memcpy(&shVal,p,sizeof(short));
			swprintf(sTemp,L"%s = %d",pField->NAME,shVal);
			break;
		case DATA_TINYINT:
			swprintf(sTemp,L"%s = %d",pField->NAME,*(BYTE*)p);
			break;
		case DATA_NVARCHAR:
			MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,p,pField->Length-1,sTemp1,pField->Length);
			ReplaceYinhao(sTemp1);
		//	wcscpy(sTemp,L" = '");
		//	wcscpy(sTemp,pField->NAME);
		//	wcscat(sTemp,L" = '");
		//	wcscat(sTemp,sTemp1);
		//	wcscat(sTemp,L"'");
			swprintf(sTemp,L"%s = '%s'",pField->NAME,sTemp1);
			memset(sTemp1,0,300);
			break;
		default:
			ASSERT(0);
			break;
		}	
		if(!bFirst)
		{
			wcscat(SqlBuf,_T(","));
		}else
			bFirst = FALSE;
		wcscat(SqlBuf,sTemp);
	//	p+=(pBusStr->pBusFields +i)->Length;
	}
		wcscat(SqlBuf,SqlWhere);
		wcscat(SqlBuf,L";");
//		TRACE(L"%s",SqlBuf);
//		writebuginfo(SqlBuf);
		if(ExecuteSql(SqlBuf))
			return ERR_BUS_SUCCESS;
		else
			return ERR_BUS_SQLEXE;
}
/*
功能:根據指定的業務表及查詢條件取記錄
參數:
pBusTableStruct pBusStr--查詢的業務表的結構
WCHAR *wcWhere --要查詢的條件
RetResultStruct **ppResult--要返回的查詢記錄指針的指針
返回:int 
	< 0 --錯誤代碼
	
	  >=0--查詢結果記錄個數
編寫人:呂黃梁
時間:2004-12-23
*/
int CDataBase::GetRows(pBusTableStruct pBusStr,WCHAR *wcWhere,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);
//	writebuginfo(SqlBuf);
	hr = pICmdText->SetCommandText(DBGUID_SQL, SqlBuf); 
	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
    //
    memset(pData, 0, dwOffset);
	// 取數據
    // Retrieve a row handle for the row resulting from the seek
    //計算結構長度
	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)
	{
		hr = pIRowset->GetData(rghRows[0], hAccessor, pData);
		if (FAILED(hr))
		{
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
			goto Exit;
		}
		pNextResult =(RetResultStruct*)malloc(sizeof(RetResultStruct));//new RetResultStruct;
		memset(pNextResult,0,sizeof(RetResultStruct));
		pNextResult->nSize=nSizeStr;
		pNextResult->pBuf =(BYTE*)malloc(nSizeStr); //new char(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 ++;
		hr=pIRowset->ReleaseRows(1,prghRows,NULL,NULL,NULL);
		{
	/*		if(hr ==S_OK )
			{
				;
			}else if(hr ==DB_S_ERRORSOCCURRED)
			{
				MessageBox(NULL,L"",L"數據庫錯誤",MB_OK);
			}else if(hr ==E_FAIL)
			{
				MessageBox(NULL,L"",L"數據庫錯誤",MB_OK);
			}else if(hr ==E_INVALIDARG)
			{
				MessageBox(NULL,L"",L"數據庫錯誤",MB_OK);
			}else if(hr ==E_UNEXPECTED)
			{
				MessageBox(NULL,L"",L"數據庫錯誤",MB_OK);
			}else if(hr ==DB_E_ERRORSOCCURRED)
			{
				MessageBox(NULL,L"",L"數據庫錯誤",MB_OK);
			}else
			{
				MessageBox(NULL,L"unknown",L"數據庫錯誤",MB_OK);
			}
		*/
		}
		if (prghRows)
		{
		 //  CoTaskMemFree(prghRows);
		//   prghRows = 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;
		}

	    memset(pData, 0, dwOffset);

	}
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(pICmdProps)
	{
//		pICmdProps->Release();
	}

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

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


	if(FAILED(hr))
	{
		return ERR_BUS_SQLEXE;
	}else
		return nCount;
}
int CDataBase::CountSql(WCHAR *pSql)
{
	HRESULT     hr            = NOERROR;  
//	DBPROPSET   dbpropset[1]; 
//	DBPROP      dbprop[1]; 
	DBPROPSET   rowsetpropset[1]; 
	DBPROP      rowsetprop[2]; 
	ULONG       cbRecordCount;

	// Provider interfaces
	IRowsetPosition *    pIRowsetPos       = NULL;
	ICommandProperties * pICmdProps        = NULL;
	IDBCreateCommand *   pIDBCrtCmd        = NULL;
	ICommandText *       pICmdText         = NULL;
	IRowset *            pIRowset          = NULL;

	// 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))
	{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
wwwwxxxxx欧美| 日本高清无吗v一区| av高清不卡在线| 欧美视频一区在线| 国产人妖乱国产精品人妖| 午夜欧美视频在线观看| 国产大片一区二区| 91精品欧美久久久久久动漫| 国产精品伦理一区二区| 蜜臀久久久99精品久久久久久| 91小视频免费看| 欧美激情一区二区三区蜜桃视频| 麻豆高清免费国产一区| 欧美欧美欧美欧美| 尤物在线观看一区| av在线不卡观看免费观看| 欧美精品一区二区蜜臀亚洲| 日韩电影一区二区三区四区| 色久综合一二码| 国产精品久久久久aaaa樱花 | 日韩欧美一级特黄在线播放| 综合网在线视频| 不卡的av中国片| 国产精品久久久久久户外露出| 成人综合婷婷国产精品久久 | 久久se精品一区二区| 欧美日韩国产首页| 成人激情动漫在线观看| 国产日韩欧美一区二区三区综合| 亚洲另类色综合网站| av动漫一区二区| 国产精品欧美一区喷水| 成人免费毛片嘿嘿连载视频| 国产三级欧美三级日产三级99 | 日韩成人免费电影| 欧美蜜桃一区二区三区| 五月婷婷综合网| 91精品在线麻豆| 日av在线不卡| 日韩一区二区视频| 精品影院一区二区久久久| 精品久久久久久最新网址| 国产剧情一区二区三区| 国产欧美日韩在线| 91免费视频网址| 亚洲成人一区在线| 日韩一级片网址| 国产精品一区免费视频| 成人欧美一区二区三区1314| 在线观看日韩精品| 日韩电影在线免费| 国产日产欧美一区二区视频| 成人黄色一级视频| 亚洲一区在线播放| 欧美电影免费观看高清完整版在 | 日本vs亚洲vs韩国一区三区二区 | 日韩毛片精品高清免费| 日本道免费精品一区二区三区| 亚洲永久免费视频| 日韩欧美一级在线播放| www.66久久| 午夜久久久久久久久| 久久麻豆一区二区| 在线免费不卡电影| 国产麻豆精品95视频| 亚洲精品ww久久久久久p站| 日韩欧美成人一区二区| www.在线成人| 热久久国产精品| 国产精品欧美综合在线| 在线播放视频一区| 岛国一区二区三区| 天天色 色综合| 中文字幕亚洲欧美在线不卡| 欧美精品自拍偷拍动漫精品| 国产盗摄精品一区二区三区在线| 亚洲福利一区二区| 亚洲国产电影在线观看| 欧美日韩极品在线观看一区| 国产69精品一区二区亚洲孕妇| 亚洲成av人片一区二区| 中文字幕在线观看一区| 欧美草草影院在线视频| 欧美日韩视频在线观看一区二区三区| 国产一区视频导航| 日韩国产在线观看| 亚洲综合一二区| 国产精品视频一二三区 | 最新日韩在线视频| 久久午夜免费电影| 91麻豆精品国产自产在线观看一区 | 免费的国产精品| 亚洲激情六月丁香| 中文字幕一区二区三区精华液| 日韩亚洲欧美在线| 日韩一区国产二区欧美三区| 欧美日韩久久久| 欧美三级中文字| 在线亚洲高清视频| 在线日韩一区二区| 欧美伊人久久久久久久久影院 | 性做久久久久久久免费看| 国产精品日日摸夜夜摸av| 精品国产a毛片| 精品久久久久99| 欧美刺激脚交jootjob| 欧美日韩国产a| 欧美日韩成人在线一区| 欧洲国产伦久久久久久久| 一本色道a无线码一区v| 91丨porny丨首页| av不卡一区二区三区| 91天堂素人约啪| 色综合咪咪久久| 欧洲国产伦久久久久久久| 在线观看日韩高清av| 欧美影片第一页| 欧美精品1区2区3区| 91精品久久久久久蜜臀| 日韩亚洲欧美综合| 久久婷婷国产综合精品青草| 26uuu精品一区二区| 久久久久亚洲蜜桃| 国产精品美日韩| 亚洲乱码日产精品bd| 亚洲影院久久精品| 蜜桃视频在线观看一区二区| 国产乱子轮精品视频| 丁香亚洲综合激情啪啪综合| 99在线视频精品| 欧美老肥妇做.爰bbww视频| 欧美高清一级片在线| 欧美电影免费观看高清完整版在线观看 | 欧美一区二区在线看| 精品国产91洋老外米糕| 久久精品人人做人人综合| 亚洲欧洲99久久| 亚洲成a人v欧美综合天堂| 国产中文一区二区三区| av激情综合网| 91精品国产乱码| 国产三区在线成人av| 亚洲精品久久久蜜桃| 蜜臀av亚洲一区中文字幕| 国产精品一区二区你懂的| 色播五月激情综合网| 日韩一区二区免费电影| 国产精品麻豆网站| 日韩影院精彩在线| jvid福利写真一区二区三区| 欧美日韩国产精品成人| 欧美激情综合在线| 肉色丝袜一区二区| 成人性视频免费网站| 欧美色欧美亚洲另类二区| 精品国产免费一区二区三区香蕉| 亚洲视频一区在线| 国产一区二区免费看| 欧洲一区二区三区免费视频| 久久久久国产一区二区三区四区| 亚洲蜜臀av乱码久久精品蜜桃| 精彩视频一区二区| 欧美色欧美亚洲另类二区| 国产午夜精品久久| 日本欧美一区二区三区乱码| av午夜一区麻豆| 欧美va在线播放| 亚洲v精品v日韩v欧美v专区| 成人福利视频网站| 精品国产制服丝袜高跟| 亚洲大片精品永久免费| 91小视频免费观看| 日本一区二区三区电影| 免费看精品久久片| 欧美三级在线视频| 一区二区三区不卡视频| av一本久道久久综合久久鬼色| 精品黑人一区二区三区久久| 视频一区二区中文字幕| 在线一区二区三区四区| 欧美国产禁国产网站cc| 久久成人精品无人区| 555www色欧美视频| 午夜伊人狠狠久久| 欧洲中文字幕精品| 亚洲无线码一区二区三区| 国产宾馆实践打屁股91| 久久午夜老司机| 国产麻豆视频一区二区| 精品国产乱码久久久久久蜜臀 | 顶级嫩模精品视频在线看| 久久丝袜美腿综合| 国产一区 二区| 精品国产亚洲一区二区三区在线观看| 五月婷婷久久丁香| 欧美日本在线观看| 青青草国产精品亚洲专区无| 91 com成人网| 久久精品99国产精品日本| 日韩精品一区二区三区中文不卡|