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

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

?? database.cpp

?? wince下對sqlserver數據庫的操作,增刪改操作,單進程單線程
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
		{
			//Send an error-specific message and do error handling.
//			writebuginfo(L"execute Command  failure!");
	//		writebuginfo(pNode->pSql);
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
			goto Exit;
		}
		pNode=pNode->pNext;
	}
Exit:

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

	if(FAILED(hr))
    {
		return FALSE;
    }else
		return TRUE;
}
/*
功能:關閉數據庫
參數:無
返回:無 
編寫人:呂黃梁
時間:2004-12-23
*/
void CDataBase::CloseData()
{
	if(m_pIDBCreateSession)
	{
        HRESULT        hr = NOERROR;
        IDBInitialize *pIDBInitialize = NULL;

	    hr = m_pIDBCreateSession->QueryInterface(IID_IDBInitialize, (void **) &pIDBInitialize);
	    if(SUCCEEDED(hr))
	    {
            pIDBInitialize->Uninitialize();
            pIDBInitialize->Release();
        }
        
		m_pIDBCreateSession->Release();
		m_pIDBCreateSession=NULL;
	}
	m_bOpen= FALSE;

//	CoUninitialize();

}
/*
功能:插入一條新記錄
參數:
pBusTableStruct pBusStr--修改的業務表的結構
char *pRowStr --要修改的記錄的結構,所有的字段均要有
返回:int 
	< 0 --錯誤代碼
	> 0--新記錄的主鍵
編寫人:呂黃梁
時間:2004-12-23
*/
int CDataBase::Insert(pBusTableStruct pBusStr,char *pRowStr,BOOL bAutoKey)
{
	HRESULT				hr					= NOERROR;			// Error code reporting
	DBBINDING			*prgBinding			= NULL;				// Binding used to create accessor
    HROW				rghRows[1]          = {DB_NULL_HROW};   // Array of row handles obtained from the rowset object
	HROW				*prghRows			= rghRows;			// Row handle(s) pointer
	DBID				TableID;								// Used to open/create table
	DBID				IndexID;								// Used to create index
	DBPROPSET			rowsetpropset[1];						// Used when opening integrated index
	DBPROP				rowsetprop[1];							// Used when opening integrated index
   	ULONG				cRowsObtained		= 0;				// Number of rows obtained from the rowset object
    DBOBJECT			dbObject;								// DBOBJECT data.
	DBCOLUMNINFO		*pDBColumnInfo		= NULL;				// Record column metadata
	BYTE				*pData				= NULL;				// record data
	WCHAR				*pStringsBuffer		= NULL;
	DWORD				dwBindingSize		= 0;
	DWORD				dwIndex				= 0;
	DWORD				dwRow				= 0;
	DWORD				dwCol				= 0;
	DWORD				dwOffset			= 0;
	ULONG				ulNumCols;

	IOpenRowset			*pIOpenRowset		= NULL;				// Provider Interface Pointer
	IRowset				*pIRowset			= NULL;				// Provider Interface Pointer
	ITransactionLocal	*pITxnLocal			= NULL;				// Provider Interface Pointer
	IRowsetChange		*pIRowsetChange		= NULL;				// Provider Interface Pointer
	IAccessor			*pIAccessor			= NULL;				// Provider Interface Pointer
	ISequentialStream	*pISequentialStream = NULL;				// Provider Interface Pointer
	IColumnsInfo		*pIColumnsInfo		= NULL;				// Provider Interface Pointer
	HACCESSOR			hAccessor			= DB_NULL_HACCESSOR;// Accessor handle,
	HACCESSOR			hAccessor1			= DB_NULL_HACCESSOR;// Accessor handle
	
	int nID=0;

	VariantInit(&rowsetprop[0].vValue);

	// Validate IDBCreateSession interface
	//
	if (NULL == m_pIDBCreateSession)
	{
		ASSERT(0);
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		return -101;//編程錯誤
	}

    // Create a session object 
    //
    hr = m_pIDBCreateSession->CreateSession(NULL, IID_IOpenRowset, (IUnknown**)&pIOpenRowset);
    if(FAILED(hr))
    {
 		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
       goto Exit;
    }

	hr = pIOpenRowset->QueryInterface(IID_ITransactionLocal, (void**)&pITxnLocal);
	if(FAILED(hr))
	{
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		goto Exit;
	}

	// Set up information necessary to open a table 
	// using an index and have the ability to seek.
	//
	TableID.eKind			= DBKIND_NAME;
	TableID.uName.pwszName	= pBusStr->Name;//(WCHAR*)TABLE_EMPLOYEE;

	IndexID.eKind			= DBKIND_NAME;
	IndexID.uName.pwszName	= L"PK_Employees";

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

	rowsetprop[0].dwPropertyID		= DBPROP_IRowsetChange;
	rowsetprop[0].dwOptions			= DBPROPOPTIONS_REQUIRED;
	rowsetprop[0].colid				= DB_NULLID;
	rowsetprop[0].vValue.vt			= VT_BOOL;
	rowsetprop[0].vValue.boolVal	= VARIANT_TRUE;

	// Open the table using the index
	//
	hr = pIOpenRowset->OpenRowset(	NULL,
									&TableID,
									NULL,//&IndexID,
									IID_IRowset,
									sizeof(rowsetpropset)/sizeof(rowsetpropset[0]),
									rowsetpropset,
									(IUnknown**) &pIRowset);
	if(FAILED(hr))
	{
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		goto Exit;
	}

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

    // 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.
    // The binding doesn't include the bookmark column (first column).
	//
	dwBindingSize = ulNumCols - 1;
	ASSERT(pBusStr->Num == dwBindingSize);

	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)
    {
		prgBinding[dwIndex].iOrdinal	= pDBColumnInfo[dwIndex + 1].iOrdinal;
		prgBinding[dwIndex].pTypeInfo	= NULL;
		prgBinding[dwIndex].pBindExt	= NULL;
		prgBinding[dwIndex].dwMemOwner	= DBMEMOWNER_CLIENTOWNED;
		prgBinding[dwIndex].dwFlags		= 0;
		prgBinding[dwIndex].bPrecision	= pDBColumnInfo[dwIndex + 1].bPrecision;
		prgBinding[dwIndex].bScale		= pDBColumnInfo[dwIndex + 1].bScale;
		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);

		switch(pDBColumnInfo[dwIndex + 1].wType)
		{
		case DBTYPE_BYTES:
			// Set up the DBOBJECT structure.
			//
			dbObject.dwFlags = STGM_WRITE;
			dbObject.iid = IID_ISequentialStream;

			prgBinding[dwIndex].pObject		= &dbObject;
			prgBinding[dwIndex].cbMaxLen	= sizeof(IUnknown*);
			prgBinding[dwIndex].wType		= DBTYPE_IUNKNOWN;
			break;

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

		default:
			prgBinding[dwIndex].pObject		= NULL;
			prgBinding[dwIndex].wType		= pDBColumnInfo[dwIndex + 1].wType;
			prgBinding[dwIndex].cbMaxLen	= pDBColumnInfo[dwIndex + 1].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 for getdata
	//
	hr = pIRowset->QueryInterface(IID_IAccessor, (void**)&pIAccessor);
	if(FAILED(hr))
	{
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		goto Exit;
	}

    // Create accessor.for getdata
	//
    hr = pIAccessor->CreateAccessor(DBACCESSOR_ROWDATA, 
									dwBindingSize, 
									prgBinding,
									0,
									&hAccessor,
									NULL);
    if(FAILED(hr))
    {
 		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
       goto Exit;
    }
    // Create accessor.for autokey insert
	//
    hr = pIAccessor->CreateAccessor(DBACCESSOR_ROWDATA, 
									dwBindingSize-1, 
									prgBinding+1,
									0,
									&hAccessor1,
									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)
	{
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		hr = E_OUTOFMEMORY;
		goto Exit;
	}

	// Begins a new local transaction
	//
	hr = pITxnLocal->StartTransaction(ISOLATIONLEVEL_READCOMMITTED | ISOLATIONLEVEL_CURSORSTABILITY, 0, NULL, NULL);
	if(FAILED(hr))
	{
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
		goto Exit;
	}

	// Insert sample data
	//
//	for (dwRow = 0; dwRow < sizeof(g_SampleEmployeeData)/sizeof(g_SampleEmployeeData[0]); ++dwRow)
	{

		// Set data buffer to zero
		//
		memset(pData, 0, dwOffset);
		for (dwCol = 0; dwCol < dwBindingSize; ++dwCol)
		{
			// Get column value in string
			//

			switch(prgBinding[dwCol].wType)
			{
				case DBTYPE_WSTR:
					// Copy value to binding buffer, truncate the string if it is too long
					//
					
				//	*(pRowStr+prgBinding[dwCol].cbMaxLen/sizeof(WCHAR) - 1)=0;
				//	wsprintf((WCHAR*)(pData+prgBinding[dwCol].obValue),L"%ls",pVoid);
					MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,pRowStr,(pBusStr->pBusFields +dwCol)->Length-1,(WCHAR*)(pData+prgBinding[dwCol].obValue),
						prgBinding[dwCol].cbMaxLen/sizeof(WCHAR));
					*(ULONG*)(pData+prgBinding[dwCol].obLength)		= wcslen((WCHAR*)(pData+prgBinding[dwCol].obValue))*sizeof(WCHAR);//prgBinding[dwCol].cbMaxLen;
					*(DBSTATUS*)(pData+prgBinding[dwCol].obStatus)	= DBSTATUS_S_OK;
					break;

				case DBTYPE_IUNKNOWN:
					ASSERT(0);
					break;

				case DBTYPE_I4:
			//		if(dwCol == pBusStr->KeyIndex1)
			//		{
			//			*(int*)(pData+prgBinding[dwCol].obValue)		= -1;//_wtoi(g_SampleEmployeeData[dwRow].wszEmployeeInfo[dwCol]);
			//		}else
			//			*((int*)(pData+prgBinding[dwCol].obValue))		= *((int *)pRowStr);//_wtoi(g_SampleEmployeeData[dwRow].wszEmployeeInfo[dwCol]);
			//		*(ULONG*)(pData+prgBinding[dwCol].obLength)		= 4;
			//		*(DBSTATUS*)(pData+prgBinding[dwCol].obStatus)	= DBSTATUS_S_OK;
			//		break;

				default:
					memcpy(pData+prgBinding[dwCol].obValue,pRowStr,(pBusStr->pBusFields + dwCol)->Length);
				//	*(int*)(pData+prgBinding[dwCol].obValue)		= *((int *)pVoid);//_wtoi(g_SampleEmployeeData[dwRow].wszEmployeeInfo[dwCol]);
					*(ULONG*)(pData+prgBinding[dwCol].obLength)		= prgBinding[dwCol].cbMaxLen;
					*(DBSTATUS*)(pData+prgBinding[dwCol].obStatus)	= DBSTATUS_S_OK;
					
					break;
			}
			pRowStr +=(pBusStr->pBusFields + dwCol)->Length;//prgBinding[dwCol].cbMaxLen;
		}

		// Insert data to database
		//
		if(bAutoKey)
			hr = pIRowsetChange->InsertRow(DB_NULL_HCHAPTER, hAccessor1, pData, prghRows);
		else 
			hr = pIRowsetChange->InsertRow(DB_NULL_HCHAPTER, hAccessor, pData, prghRows);
		if (FAILED(hr))
		{
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
			goto Abort;
		}

		// Get the row data
		//
		hr = pIRowset->GetData(rghRows[0], hAccessor, pData);
        if(FAILED(hr))
        {
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
			goto Abort;
        }
		nID=*(int*)(pData+prgBinding[0].obValue);
        // Check the status
        //
/*        if (DBSTATUS_S_OK != *(DBSTATUS*)(pData+prgBinding[dwPhotoCol].obStatus))
        {
            hr = E_FAIL;
			goto Abort;
        }

		// Insert photo into database through ISequentialStream
		//
		pISequentialStream = (*(ISequentialStream**) (pData + prgBinding[dwPhotoCol].obValue));
		if (pISequentialStream)
		{
			// Insert photo
			//
			hr = SaveEmployeePhoto(pISequentialStream, g_SampleEmployeeData[dwRow].dwEmployeePhoto);
			if(FAILED(hr))
			{
				goto Abort;
			}

			// Release ISequentialStream interface
			//
			hr = pISequentialStream->Release();
			if(FAILED(hr))
			{
				pISequentialStream = NULL;
				goto Abort;
			}

			pISequentialStream = NULL;
		}
*/
        // Release the rowset
		//
		hr = pIRowset->ReleaseRows(1, prghRows, NULL, NULL, NULL);
        if(FAILED(hr))
        {
		writebuginfo("file:%s,line:%d\r\n",__FILE__,__LINE__);
			goto Abort;
        }

        prghRows[0] = DB_NULL_HROW;
	}

	// Commit the transaction
	//
	if (pITxnLocal)
	{
		pITxnLocal->Commit(FALSE, XACTTC_SYNC, 0);
	}

	goto Exit;

Abort:
    if (DB_NULL_HROW != prghRows[0])
    {
        pIRowset->ReleaseRows(1, prghRows, NULL, NULL, NULL);
    }

	// Abort the transaction
	//
	if (pITxnLocal)
	{
		pITxnLocal->Abort(NULL, FALSE, FALSE);
	}

Exit:
    // Clear Variants
    //
	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;
    }
	
	// Free allocated column string values buffer
    //
    if (pStringsBuffer)
    {
        CoTaskMemFree(pStringsBuffer);
        pStringsBuffer = NULL;
    }

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

	// Release interfaces
	//
    if(pISequentialStream)
    {
		pISequentialStream->Release();
    }

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

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

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

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

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

	if(pIOpenRowset)
	{
		pIOpenRowset->Release();
	}
	if(nID >0)
		return nID;
	else
	{
        if(FAILED(hr))
        {
			
			return ERR_BUS_SQLEXE;
        }
		ASSERT(0);
		return ERR_BUS_SQLEXE;
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
9191成人精品久久| 成人免费看黄yyy456| 91久久精品一区二区| 国产欧美日产一区| 国产在线视频精品一区| 精品粉嫩超白一线天av| 免费看日韩精品| 日韩一级片在线观看| 美女一区二区久久| 日韩欧美一级二级| 久久精品国产精品亚洲综合| 日韩精品资源二区在线| 韩国精品在线观看| 久久欧美一区二区| 国产99久久久精品| 国产精品成人午夜| 色哟哟精品一区| 亚洲午夜久久久久中文字幕久| 色噜噜狠狠一区二区三区果冻| 亚洲一区二区三区中文字幕| 欧美亚洲动漫制服丝袜| 日本不卡视频在线观看| 亚洲精品一区二区精华| 成人免费高清视频| 亚洲免费在线看| 欧美日本韩国一区| 久久国产剧场电影| 日韩精品一区二区三区三区免费| 国产一区二区三区不卡在线观看| 国产欧美日韩另类一区| 99国产一区二区三精品乱码| 亚洲综合成人网| 日韩欧美卡一卡二| 成人精品国产福利| 亚洲国产欧美另类丝袜| 精品三级在线看| 成年人国产精品| 亚洲成人av在线电影| 91精品中文字幕一区二区三区| 日本欧美韩国一区三区| 欧美精品一区视频| 不卡影院免费观看| 亚洲国产日韩综合久久精品| 欧美理论电影在线| 精品制服美女久久| 一区二区在线观看视频| 91久久人澡人人添人人爽欧美| 男人的天堂久久精品| 自拍偷自拍亚洲精品播放| 欧美一级在线观看| 北岛玲一区二区三区四区| 午夜精品久久久久久不卡8050 | 97精品国产露脸对白| 五月天亚洲婷婷| 久久精品视频免费| 欧美日韩成人在线| 91丝袜美腿高跟国产极品老师| 亚洲精品成人a在线观看| 精品三级在线看| 欧美三级中文字幕在线观看| 成人免费视频视频| 麻豆精品在线看| 亚洲国产成人va在线观看天堂| 久久婷婷色综合| 91国产精品成人| 国产一区视频网站| 偷拍一区二区三区四区| 亚洲视频网在线直播| 国产日韩欧美精品在线| 欧美一级专区免费大片| 欧美性大战久久久久久久蜜臀| 成人性视频免费网站| 九一九一国产精品| 五月综合激情婷婷六月色窝| 亚洲欧美偷拍另类a∨色屁股| 国产亚洲欧洲一区高清在线观看| 欧美剧在线免费观看网站| 91在线视频在线| 成人动漫精品一区二区| 国产成人丝袜美腿| 国产成人综合精品三级| 午夜一区二区三区视频| 亚洲精品欧美激情| 亚洲欧美韩国综合色| 国产精品传媒入口麻豆| 国产精品免费久久久久| 久久九九影视网| 久久综合色天天久久综合图片| 欧美女孩性生活视频| 欧美午夜一区二区三区免费大片| 色悠悠亚洲一区二区| 91色九色蝌蚪| 91电影在线观看| 色老头久久综合| 在线视频亚洲一区| 91黄视频在线观看| 欧洲精品在线观看| 欧美亚州韩日在线看免费版国语版| 日本电影欧美片| 欧美日韩久久一区| 欧美性视频一区二区三区| 一本久久a久久精品亚洲| 色综合天天综合网天天看片| 国产91对白在线观看九色| 青青青爽久久午夜综合久久午夜| 青青国产91久久久久久 | 欧美日韩在线不卡| 欧美日韩免费一区二区三区| 欧美群妇大交群的观看方式| 91精品国产综合久久久久久久| 欧美一区二区三区日韩视频| 欧美成人欧美edvon| 久久久精品国产免大香伊| 亚洲国产精品成人综合色在线婷婷| 国产欧美一区二区三区网站| 亚洲情趣在线观看| 日韩精品乱码av一区二区| 男女男精品视频| 高清成人免费视频| 欧美日韩在线直播| 久久亚洲欧美国产精品乐播 | 视频在线观看国产精品| 日韩中文字幕麻豆| 国产成人精品一区二区三区四区| 色综合久久综合| 91.麻豆视频| 久久久夜色精品亚洲| 亚洲女同ⅹxx女同tv| 奇米888四色在线精品| 成人av综合在线| 欧美一级精品在线| 欧美激情在线观看视频免费| 国产精品乱人伦| 一区二区三区鲁丝不卡| 午夜久久久久久电影| 国产综合久久久久久鬼色| av一本久道久久综合久久鬼色| av动漫一区二区| 精品国产91洋老外米糕| 伊人性伊人情综合网| 韩国v欧美v日本v亚洲v| 欧美无乱码久久久免费午夜一区| 26uuu色噜噜精品一区| 亚洲精品伦理在线| 国产在线视频精品一区| 欧美性猛片xxxx免费看久爱| 国产免费成人在线视频| 三级成人在线视频| 91免费视频观看| 久久女同性恋中文字幕| 日韩专区在线视频| 欧美在线观看视频一区二区| 日韩一卡二卡三卡四卡| 亚洲女人的天堂| 国产不卡在线一区| 精品国产免费久久| 日韩激情av在线| 91福利精品视频| 亚洲欧洲色图综合| 国产在线播精品第三| 538在线一区二区精品国产| 亚洲视频网在线直播| 成人动漫av在线| 国产日韩影视精品| 久久精品国产亚洲aⅴ| 欧美高清hd18日本| 亚洲资源中文字幕| 成人国产在线观看| 欧美日韩亚洲综合| 亚洲成年人网站在线观看| 色综合久久中文综合久久牛| 国产精品免费av| 国产99久久久精品| 国产女同互慰高潮91漫画| 国产一区二区三区| 精品少妇一区二区三区日产乱码| 青青草成人在线观看| 7799精品视频| 日本不卡一二三区黄网| 91精品国产免费| 亚洲精品自拍动漫在线| 成人免费毛片app| 一区二区三区视频在线看| 97久久精品人人做人人爽50路| 国产精品电影一区二区| 成人app网站| 亚洲另类在线视频| 欧洲另类一二三四区| 亚洲国产成人av网| 欧美久久久影院| 美女视频一区二区| 日韩午夜av一区| 麻豆精品一区二区三区| 日韩欧美第一区| 国产一区二区电影| 国产精品灌醉下药二区| 色综合天天综合网国产成人综合天 | 欧美亚洲愉拍一区二区| 亚洲综合在线视频| 欧美一卡二卡在线|