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

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

?? cedbusedlg.cpp

?? EVC編寫的WINCE自帶數據庫的測試程序
?? CPP
字號:
// CEDBUseDlg.cpp : implementation file
//

#include "stdafx.h"
#include "CEDBUse.h"
#include "CEDBUseDlg.h"

#include "DriverInputDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CCEDBUseDlg dialog

CCEDBUseDlg::CCEDBUseDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CCEDBUseDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCEDBUseDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	//初始化數據庫句柄
	m_hDB = 0;
	//將數據庫對象標識設置為0
	m_ceOid = 0;
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CCEDBUseDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCEDBUseDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CCEDBUseDlg, CDialog)
	//{{AFX_MSG_MAP(CCEDBUseDlg)
	ON_BN_CLICKED(IDC_BTNOPEN, OnBtnopen)
	ON_BN_CLICKED(IDC_BTNCLOSE, OnBtnclose)
	ON_BN_CLICKED(IDC_BTNREFRESH, OnBtnrefresh)
	ON_BN_CLICKED(IDC_BTNADD, OnBtnadd)
	ON_BN_CLICKED(IDC_BTNEDIT, OnBtnedit)
	ON_BN_CLICKED(IDC_BTNDELETE, OnBtndelete)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCEDBUseDlg message handlers

BOOL CCEDBUseDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	CenterWindow(GetDesktopWindow());	// center to the hpc screen

	// TODO: Add extra initialization here
	//設置駕駛員列表框標題
	CListCtrl * pListCtrl = (CListCtrl *)GetDlgItem(IDC_LIST_DRIVER);
	CRect rt;
	pListCtrl->GetClientRect(&rt);
	pListCtrl->InsertColumn(0, _T("編號"), LVCFMT_LEFT, rt.Width() * 0.2);
	pListCtrl->InsertColumn(1, _T("姓名"), LVCFMT_LEFT, rt.Width() * 0.3);
	pListCtrl->InsertColumn(2, _T("出生日期"), LVCFMT_LEFT, rt.Width() * 0.3);
	pListCtrl->InsertColumn(3, _T("身高"), LVCFMT_LEFT, rt.Width() * 0.2);
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}


/*
*函數介紹:“打開數據庫”按鈕單擊事件函數
*入口參數:無
*出口參數:無
*返回值:無
*/
void CCEDBUseDlg::OnBtnopen() 
{
	// TODO: Add your control notification handler code here
	//1.掛載數據庫卷,如果存在則打開,不存在,則新建一個
	if (!CeMountDBVol(&m_ceGuid, DBFILENAME, OPEN_ALWAYS))
	{
		AfxMessageBox(_T("打開或新建數據庫卷失敗"));
		return;
	}
	//2.打開數據庫
	m_hDB = CeOpenDatabaseEx(&m_ceGuid, &m_ceOid, DBTABLENAME, NULL, CEDB_AUTOINCREMENT, NULL);
	if (m_hDB == INVALID_HANDLE_VALUE)
	{
		//3.如果數據庫不存在,則新建
		if (GetLastError() == ERROR_FILE_NOT_FOUND)
		{
			CEDBASEINFO ceDbInfo;
			ceDbInfo.dwFlags = CEDB_VALIDNAME | CEDB_VALIDTYPE | CEDB_VALIDSORTSPEC;
			wcscpy(ceDbInfo.szDbaseName, DBTABLENAME);
			ceDbInfo.dwDbaseType = 0;
			ceDbInfo.wNumSortOrder = 2;  //排序字段數目
			ceDbInfo.rgSortSpecs[0].propid = PID_NO;
			//升序,且大小寫無關
			ceDbInfo.rgSortSpecs[0].dwFlags = CEDB_SORT_CASEINSENSITIVE;
			ceDbInfo.rgSortSpecs[1].propid = PID_NAME;
			//升序,且大小寫無關
			ceDbInfo.rgSortSpecs[1].dwFlags = CEDB_SORT_CASEINSENSITIVE;
			m_ceOid = CeCreateDatabaseEx(&m_ceGuid, &ceDbInfo);
			if (m_ceOid == 0)
			{
				AfxMessageBox(_T("創建數據庫文件卷失敗"));
				//此處要卸載數據庫卷
				if (!CeUnmountDBVol(&m_ceGuid))
				{
					AfxMessageBox(_T("卸載數據庫文件卷失敗"));
				}
				return;
			}
		//4.創建數據庫后,應緊接著打開數據庫
			m_hDB = CeOpenDatabaseEx(&m_ceGuid, &m_ceOid, DBTABLENAME, 
				NULL, CEDB_AUTOINCREMENT, NULL);
			if (m_hDB == INVALID_HANDLE_VALUE)
			{
				AfxMessageBox(_T("打開數據庫失敗"));
				//此處卸載數據庫
				if (!CeUnmountDBVol(&m_ceGuid))
				{
					AfxMessageBox(_T("卸載數據庫文件卷失敗"));
				}
				return ;
			}
		}
		else
		{
			AfxMessageBox(_T("打開數據庫失敗"));
			//此處要卸載數據庫卷
			if (!CeUnmountDBVol(&m_ceGuid))
			{
				AfxMessageBox(_T("卸載數據庫文件卷失敗"));
			}
			return;
		}
	}
}

/*
*函數介紹:“關閉數據庫”按鈕單擊事件函數
*入口參數:無
*出口參數:無
*返回值L: 無
*/
void CCEDBUseDlg::OnBtnclose() 
{
	// TODO: Add your control notification handler code here
	//1. 關閉數據庫
	if (!CloseHandle(m_hDB))
	{
		AfxMessageBox(_T("關閉數據庫失敗"));
		return ;
	}
	//2.將數據庫卷的數據緩沖到到永久存儲介質上
	if (!CeFlushDBVol(&m_ceGuid))
	{
		AfxMessageBox(_T("緩沖介質失敗"));
		return;
	}
	//3.卸載數據庫卷
	if (!CeUnmountDBVol(&m_ceGuid))
	{
		AfxMessageBox(_T("卸載數據庫卷失敗"));
		return;
	}
}

/*
*函數介紹:獲取數據庫的記錄數目
*入口參數:pCeGuid: 數據庫文件卷標識指針
		   ceOid: 數據庫對象標識
*出口參數:無
*返回值: -1代表失敗。如果成功,則返回實際的記錄數
*/
int CCEDBUseDlg::GetRecordCount(CEGUID *pCeGuid, CEOID ceOid)
{
	int iCount;
	CEOIDINFO oidinfo;
	if (!CeOidGetInfoEx(pCeGuid, ceOid, &oidinfo))
	{
		AfxMessageBox(_T("獲取信息失敗"));
		return -1;
	}
	iCount = oidinfo.infDatabase.wNumRecords;
	return iCount;
}

/*
*函數介紹:“刷新”按鈕單擊事件函數
*入口參數:無
*出口參數:無
*返回值:  無
*/
void CCEDBUseDlg::OnBtnrefresh() 
{
	// TODO: Add your control notification handler code here
	CEOID ceOid;
	WORD wProps;
	DWORD dwRecSize;
	PBYTE pBuff;
	PCEPROPVAL pRecord;

	REC_DRIVER * pDriver;

	//得到數據庫記錄數
	int iRecordCount = GetRecordCount(&m_ceGuid, m_ceOid);
	DWORD dwIndex;
	//設置駕駛員列表框標題
	CListCtrl * pListCtrl = (CListCtrl *)GetDlgItem(IDC_LIST_DRIVER);
	pListCtrl->DeleteAllItems();
	for (int k=0; k<iRecordCount; k++)
	{
		//移動記錄指針
		ceOid = CeSeekDatabase(m_hDB, CEDB_SEEK_BEGINNING, k, &dwIndex);

		ASSERT(ceOid !=0);
		pBuff = 0;
		//讀取所有字段值
		ceOid = CeReadRecordProps(m_hDB, CEDB_ALLOWREALLOC, &wProps, NULL, 
			&(LPBYTE)pBuff, &dwRecSize);

		ASSERT(ceOid !=0);
		
		pRecord = (PCEPROPVAL)pBuff;
		pDriver = new REC_DRIVER;

		for (int i=0; i<wProps; i++)
		{
			switch(pRecord->propid)
			{
			case PID_NO:
				{
					wcscpy(pDriver->szNo, pRecord->val.lpwstr);
					break;
				}
			case PID_NAME:
				{
					wcscpy(pDriver->szName, pRecord->val.lpwstr);
					break;
				}
			case PID_BIRTHDAY:
				{
					pDriver->ftBrithday = pRecord->val.filetime;
					break;
				}
			case PID_STATURE:
				{
					pDriver->iStature = pRecord->val.lVal;
					break;
				}
			}
			pRecord++;
		}
		LocalFree(pBuff);

		//向列表框中添加駕駛員信息
		pListCtrl->InsertItem(k, _T("Test"));
		//添加駕駛員編號
		pListCtrl->SetItemText(k, 0, pDriver->szNo);
		//添加駕駛員姓名
		pListCtrl->SetItemText(k, 1, pDriver->szName);
		//添加駕駛員姓名,需要轉換
		SYSTEMTIME systime;
		FileTimeToSystemTime(&(pDriver->ftBrithday), &systime);
		TCHAR szBirthday[11];
		swprintf(szBirthday, _T("%d-%d-%d"), systime.wYear, systime.wMonth, systime.wDay);
		pListCtrl->SetItemText(k, 2, szBirthday);
		//添加駕駛員身高,此處需要將數字轉換成字符串
		TCHAR szStature[5];
		_itow(pDriver->iStature, szStature, 10);
		pListCtrl->SetItemText(k, 3, szStature);
		delete pDriver;
	}
}

/*
*函數介紹:添加一條新記錄
*入口參數:dri:駕駛員數據庫結構
*出口參數:無
*返回值:  無
*/
BOOL CCEDBUseDlg::AddNewDriver(REC_DRIVER dri)
{
	CEOID ceOid;
	CEPROPVAL *pProps;
	pProps = new CEPROPVAL[4];
	//駕駛員編號
	memset(pProps, 0, LocalSize(pProps));
	pProps->propid = PID_NO;
	pProps->val.lpwstr = dri.szNo;
	//駕駛員姓名
	pProps++;
	memset(pProps, 0, LocalSize(pProps));
	pProps->propid = PID_NAME;
	pProps->val.lpwstr = dri.szName;
	//駕駛員出生日期
	pProps++;
	memset(pProps, 0, LocalSize(pProps));
	pProps->propid = PID_BIRTHDAY;
	pProps->val.filetime = dri.ftBrithday;
	//駕駛員身高
	pProps++;
	memset(pProps, 0, LocalSize(pProps));
	pProps->propid = PID_STATURE;
	pProps->val.iVal = dri.iStature;

	pProps = pProps -3;
	ceOid = CeWriteRecordProps(m_hDB, 0, 4, pProps);

	if (ceOid == 0)
	{
		return false;
	}
	return true;
}

/*
*函數介紹:編輯記錄
*入口參數:dri:駕駛員數據庫表結構
		   ceOid: 記錄對象標識
*出口參數:無
*返回值:TRUE表示編輯成功, FALSE表示編輯失敗
*/
BOOL CCEDBUseDlg::EditDriver(REC_DRIVER dri, CEOID ceOid)
{
	CEOID tmpCeOid;
	CEPROPVAL *pProps;
	pProps = new CEPROPVAL[4];

	//駕駛員編號
	memset(pProps, 0, LocalSize(pProps));
	pProps->propid = PID_NO;
	pProps->val.lpwstr = dri.szNo;
	//駕駛員姓名
	pProps++;
	memset(pProps, 0, LocalSize(pProps));
	pProps->propid = PID_NAME;
	pProps->val.lpwstr = dri.szName;
	//駕駛員出生日期
	pProps++;
	memset(pProps, 0, LocalSize(pProps));
	pProps->propid = PID_BIRTHDAY;
	pProps->val.filetime = dri.ftBrithday;
	//駕駛員身高
	pProps++;
	memset(pProps, 0, LocalSize(pProps));
	pProps->propid = PID_STATURE;
	pProps->val.iVal = dri.iStature;

	pProps = pProps -3;
	tmpCeOid = CeWriteRecordProps(m_hDB, ceOid, 4, pProps);

	if (tmpCeOid == 0)
	{
		return false;
	}
	return true;
}


/*
*函數介紹:“添加記錄”按鈕事件函數
*入口參數:無
*出口參數:無
*返回值:  無
*/
void CCEDBUseDlg::OnBtnadd() 
{
	// TODO: Add your control notification handler code here
	REC_DRIVER rec_dri;

	CDriverInputDlg inputDlg;
	if (inputDlg.DoModal() == IDOK)
	{
		//得到編號
		wcscpy(rec_dri.szNo, LPCTSTR(inputDlg.m_no));
		//得到姓名
		wcscpy(rec_dri.szName, LPCTSTR(inputDlg.m_name));
		//得到出生日期
		SYSTEMTIME timeDest;
		inputDlg.m_birthday.GetAsSystemTime(timeDest);
		::SystemTimeToFileTime(&timeDest, &(rec_dri.ftBrithday));
		//得到身高值
		rec_dri.iStature = inputDlg.m_stature;
		AddNewDriver(rec_dri);
	}
}

/*
*函數介紹:編輯記錄
*入口參數:無
*出口參數:無
*返回值:  無
*/
void CCEDBUseDlg::OnBtnedit() 
{
	// TODO: Add your control notification handler code here
	REC_DRIVER rec_dri;
	CEOID ceOid;
	PBYTE pBuff;
	WORD  wProps;
	DWORD dwRecSize;
	PCEPROPVAL pRecord;
	REC_DRIVER *pDriver;

	//設置駕駛員列表框標題
	CListCtrl *pListCtrl = (CListCtrl *)GetDlgItem(IDC_LIST_DRIVER);
	int iItemIndex = pListCtrl->GetNextItem(-1, LVNI_SELECTED);
	ASSERT(iItemIndex != -1);
	DWORD dwIndex;
	ceOid = CeSeekDatabase(m_hDB, CEDB_SEEK_BEGINNING, iItemIndex, &dwIndex);
	ASSERT(ceOid !=0);

	pBuff = 0;
	//讀取所有記錄值
	ceOid = CeReadRecordProps(m_hDB, CEDB_ALLOWREALLOC, &wProps, NULL, 
		&(LPBYTE)pBuff, &dwRecSize);

	ASSERT(ceOid !=0);

	pRecord = (PCEPROPVAL)pBuff;
	pDriver = new REC_DRIVER;

	for (int i=0; i<wProps; i++)
	{
		switch (pRecord->propid)
		{
		case PID_NO:
			{
				wcscpy(pDriver->szNo, pRecord->val.lpwstr);
				break;
			}
		case PID_NAME:
			{
				wcscpy(pDriver->szName, pRecord->val.lpwstr);
				break;
			}
		case PID_BIRTHDAY:
			{
				pDriver->ftBrithday = pRecord->val.filetime;
				break;
			}
		case PID_STATURE:
			{
				pDriver->iStature = pRecord->val.iVal;
				break;
			}
		}
		pRecord++;
	}
	LocalFree(pBuff);

	CDriverInputDlg inputDlg;
	//同步編輯對話框輸入框值
	inputDlg.m_no = pDriver->szNo;
	inputDlg.m_name = pDriver->szName;
	SYSTEMTIME tmpTime;
	FileTimeToSystemTime(&(pDriver->ftBrithday), &tmpTime);
	inputDlg.m_birthday = tmpTime;
	inputDlg.m_stature = pDriver->iStature;

	delete pDriver;
	if (inputDlg.DoModal() == IDOK)
	{
		//得到編號
		wcscpy(rec_dri.szNo, LPCTSTR(inputDlg.m_no));
		//得到姓名
		wcscpy(rec_dri.szName, LPCTSTR(inputDlg.m_name));
		//得到出生日期
		SYSTEMTIME timeDest;
		inputDlg.m_birthday.GetAsSystemTime(timeDest);
		::SystemTimeToFileTime(&timeDest, &(rec_dri.ftBrithday));
		//得到身高值
		rec_dri.iStature = inputDlg.m_stature;
		EditDriver(rec_dri, ceOid);
	}
	//編輯完后調用"刷新"按鈕單擊事件方法
	OnBtnrefresh();
}

/*
*函數介紹:“刪除當前記錄”按鈕事件函數
*入口參數:無
*出口參數:無
*返回值:  無
*/
void CCEDBUseDlg::OnBtndelete() 
{
	// TODO: Add your control notification handler code here
	//設置駕駛員列表框標題
	CListCtrl *pListCtrl = (CListCtrl *)GetDlgItem(IDC_LIST_DRIVER);
	int iItemIndex = pListCtrl->GetNextItem(-1, LVNI_SELECTED);
	ASSERT(iItemIndex != -1);

	DWORD dwIndex;
	CEOID ceOid;
	ceOid = CeSeekDatabase(m_hDB, CEDB_SEEK_BEGINNING, iItemIndex, &dwIndex);
	ASSERT(ceOid !=0);
		if (!CeDeleteRecord(m_hDB, ceOid))
		{
			AfxMessageBox(_T("刪除失敗"));
		}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产欧美日美国产精品| 99久久久国产精品| 91激情五月电影| 久久久一区二区三区捆绑**| 亚洲成人av在线电影| www.久久久久久久久| 欧美mv日韩mv国产| 天堂成人国产精品一区| 97aⅴ精品视频一二三区| 久久精品水蜜桃av综合天堂| 日本不卡视频一二三区| 欧美午夜在线一二页| 国产精品久久久久久久蜜臀 | 精品国产污网站| 婷婷综合久久一区二区三区| 91啦中文在线观看| 国产精品久久久久久久久晋中| 精品一区二区三区的国产在线播放 | 国产精品午夜在线| 久久99精品国产麻豆不卡| 欧美精品在线一区二区| 亚洲最新在线观看| 色综合久久久久综合| 欧美国产精品v| 国产成人午夜精品5599| 精品捆绑美女sm三区| 免费在线观看一区| 欧美精品久久99| 亚洲成年人影院| 欧美日韩在线三级| 亚洲va欧美va人人爽午夜| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 激情成人综合网| 日韩欧美二区三区| 理论电影国产精品| 精品免费99久久| 久久99久久99小草精品免视看| 日韩欧美123| 蜜臀av性久久久久蜜臀aⅴ四虎 | 日韩欧美在线综合网| 青青国产91久久久久久 | 一本色道久久综合亚洲精品按摩| 中文字幕亚洲区| 成人免费高清在线观看| 中文字幕av资源一区| 成人午夜电影小说| 国产精品对白交换视频| 丁香一区二区三区| 国产精品久久国产精麻豆99网站| www.欧美色图| 亚洲免费三区一区二区| 91久久精品国产91性色tv| 亚洲成在人线在线播放| 91精品国产综合久久蜜臀| 奇米影视一区二区三区| 精品捆绑美女sm三区| 国产电影一区二区三区| 中文字幕欧美日本乱码一线二线| 北条麻妃国产九九精品视频| 亚洲欧美电影一区二区| 欧美性感一区二区三区| 秋霞影院一区二区| 久久蜜臀精品av| 99re在线视频这里只有精品| 亚洲电影一级片| 日韩亚洲欧美中文三级| 国产成人免费9x9x人网站视频| 中文字幕欧美三区| 欧美性受xxxx黑人xyx性爽| 青草av.久久免费一区| 久久伊人中文字幕| 91视频一区二区三区| 亚洲.国产.中文慕字在线| 日韩美女视频一区二区在线观看| 国产成人一区二区精品非洲| 亚洲日本青草视频在线怡红院| 欧美在线一二三四区| 美女在线视频一区| 国产精品青草综合久久久久99| 欧美性一级生活| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲精品视频自拍| 制服丝袜中文字幕亚洲| 国产乱人伦精品一区二区在线观看 | 久久久久久久久99精品| 91亚洲精品乱码久久久久久蜜桃| 亚洲电影视频在线| 久久久99精品免费观看| 色呦呦国产精品| 免费成人小视频| 国产精品免费av| 欧美久久高跟鞋激| 高清成人在线观看| 视频一区二区欧美| 中文字幕乱码日本亚洲一区二区| 欧美亚洲高清一区| 国产精品中文字幕日韩精品| 一区二区三区成人| 久久久久久久久久久久久夜| 欧美熟乱第一页| 国产不卡在线视频| 日韩国产一区二| 国产精品久久久久久福利一牛影视| 在线播放视频一区| www..com久久爱| 蜜芽一区二区三区| 一区二区视频在线看| 久久精品一区二区三区四区| 欧美日韩精品一区二区三区| 国产成人精品免费| 麻豆免费看一区二区三区| 亚洲色图制服诱惑| 久久久久久久久免费| 欧美精品日日鲁夜夜添| 99精品国产一区二区三区不卡| 精品在线一区二区三区| 亚洲r级在线视频| 中文字幕五月欧美| 精品国产乱码久久| 91精品国产色综合久久久蜜香臀| 99v久久综合狠狠综合久久| 激情综合网av| 免费在线观看一区二区三区| 亚洲综合小说图片| 国产精品精品国产色婷婷| 亚洲精品一区二区三区蜜桃下载| 欧美人与z0zoxxxx视频| 一本色道亚洲精品aⅴ| 国产成人小视频| 久久国产精品99久久久久久老狼| 亚洲狠狠爱一区二区三区| 亚洲欧美一区二区在线观看| 国产欧美视频一区二区| 精品成人在线观看| 91精品国产麻豆国产自产在线 | 99久久婷婷国产综合精品电影| 国产精品一线二线三线| 久久精品国产99久久6| 午夜精品福利在线| 亚洲福利一二三区| 亚洲最大的成人av| 亚洲精品免费在线观看| 亚洲色图在线视频| 亚洲天堂a在线| 中文字幕一区二| 国产精品乱人伦| 国产女同性恋一区二区| 国产日韩欧美精品一区| 久久久久国产精品厨房| 国产日本一区二区| 国产清纯在线一区二区www| 久久在线免费观看| 久久久www免费人成精品| 久久婷婷成人综合色| 久久久噜噜噜久久中文字幕色伊伊| 精品免费视频.| 久久这里都是精品| 欧美激情在线一区二区三区| 国产欧美精品区一区二区三区| 国产嫩草影院久久久久| 国产精品素人视频| 日韩一区欧美小说| 亚洲精品国产精华液| 亚洲国产欧美另类丝袜| 性感美女久久精品| 日本aⅴ免费视频一区二区三区 | 天天做天天摸天天爽国产一区 | 免费xxxx性欧美18vr| 久久精品国产精品亚洲精品| 黄色日韩三级电影| 国产高清久久久久| 成人av动漫在线| 色成年激情久久综合| 欧美日韩性生活| 91精品欧美综合在线观看最新| 欧美电影免费观看高清完整版在线| 欧美变态tickle挠乳网站| 国产午夜一区二区三区| 国产精品久久久久一区二区三区| 亚洲三级在线免费| 丝袜美腿亚洲一区二区图片| 免费成人性网站| 风间由美一区二区三区在线观看 | 青椒成人免费视频| 国产精品亚洲成人| 日本电影亚洲天堂一区| 国产黑丝在线一区二区三区| 成人黄色a**站在线观看| 色一情一伦一子一伦一区| 欧美视频一区二区三区四区| 欧美一级xxx| 久久精品亚洲乱码伦伦中文| 一区二区在线免费| 免费在线一区观看| 成人伦理片在线| 欧美色窝79yyyycom| 精品免费国产二区三区| 国产精品国产三级国产普通话蜜臀| 亚洲自拍偷拍av| 韩国三级中文字幕hd久久精品|