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

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

?? database.cpp

?? 將SQL Server備份到文本文件以及還原到數據庫。
?? CPP
字號:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <share.h>
#include <math.h>
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>

SQLHENV  henv1=SQL_NULL_HENV;
SQLHENV  henv2=SQL_NULL_HENV;
SQLHDBC  hdbc1=SQL_NULL_HDBC;
SQLHDBC  hdbc2=SQL_NULL_HDBC;
SQLHSTMT hstmt1=SQL_NULL_HSTMT;
SQLHSTMT hstmt2=SQL_NULL_HSTMT;

int connect_db();
int disconnect_db();
int test_odbcapi();
int recover();
void ErrorProcess(SQLSMALLINT,SQLHANDLE);


char *DataSource="lqh";
//char *DataSource="LocalServer";
char *UserName="sa";
char *Password="]]]]]]]";
char *dbname="haha";

char *FileName="odbcapi.txt";

union  {
  SQLCHAR szBuf[513];
  SQLINTEGER dwBuf;
  SQLSMALLINT wBuf;
  SQLFLOAT fBuf;
  SQLDOUBLE dBuf;
//  SQLTINYINT bitBuf;
}all_type[255];

char szData[1024*64];


int main() 
{

	 if(connect_db()!=0) 
	 {
	   printf("connect_db error!\n");
	   return(-1);
	 }

	 if(recover()!=0) 
	
	//if(test_odbcapi()!=0) 
	 {
		 printf("Test ODBCAPI error\n");
		 return (-1);
	 }

	 disconnect_db();
	 return(0);
}

int test_odbcapi()
{
 SQLRETURN sqlreturn;
 SQLCHAR table_cat[81],table_schem[81],table_name[80],table_type[81];
 SQLCHAR column_name[81],type_name[81],szType[80][81],szName[80][81];
 SQLINTEGER column_size,dwDBbuf[80],dwSize[80];
 SQLSMALLINT data_type,smType[80];
 char szText[2048];
 SQLCHAR szSelect[2048];
 FILE *fp1;
 int i,n,size_flag;
 strcpy(szText,"");
 while((fp1=_fsopen(FileName,"w+",_SH_DENYRW))==NULL) {
   printf("Open Text File Error\n");
   return(-1);
 }
 sqlreturn=SQLAllocHandle(SQL_HANDLE_STMT,hdbc1,&hstmt1);
 if((sqlreturn!=SQL_SUCCESS_WITH_INFO)&&(sqlreturn!=SQL_SUCCESS)) {
   printf("SQLAllocHandle(hstmt1) error!\n");
   return(-1);
 }
 sqlreturn=SQLAllocHandle(SQL_HANDLE_STMT,hdbc2,&hstmt2);
 if((sqlreturn!=SQL_SUCCESS_WITH_INFO)&&(sqlreturn!=SQL_SUCCESS)) {
   printf("SQLAllocHandle(hstmt2) error!\n");
   return(-1);
 }

 sqlreturn=SQLTables(hstmt1,(unsigned char *)dbname,SQL_NTS,NULL,SQL_NTS,NULL,SQL_NTS,(unsigned char *)"TABLE",SQL_NTS);
 	
 if((sqlreturn!=SQL_SUCCESS_WITH_INFO)&&(sqlreturn!=SQL_SUCCESS)) {
   printf("SQLTables error!\n");
   ErrorProcess(SQL_HANDLE_STMT,hstmt1); 
   return(-1);
 }

 SQLBindCol(hstmt1,1,SQL_C_CHAR,table_cat,80,&dwDBbuf[0]);
 SQLBindCol(hstmt1,2,SQL_C_CHAR,table_schem,80,&dwDBbuf[1]);
 SQLBindCol(hstmt1,3,SQL_C_CHAR,table_name,80,&dwDBbuf[2]);
 SQLBindCol(hstmt1,4,SQL_C_CHAR,table_type,80,&dwDBbuf[3]);
 while((sqlreturn=SQLFetch(hstmt1))==SQL_SUCCESS||sqlreturn==SQL_SUCCESS_WITH_INFO) {
   sprintf(szText,"%s %s %s %s\n",table_type,table_name,table_cat,table_schem);
   fputs(szText,fp1);
   sqlreturn=SQLColumns(hstmt2,(unsigned char *)dbname,SQL_NTS,table_schem,SQL_NTS,table_name,SQL_NTS,NULL,SQL_NTS);
   if((sqlreturn!=SQL_SUCCESS_WITH_INFO)&&(sqlreturn!=SQL_SUCCESS)) 
   {
     printf("SQLColumns error! table_cat=%s,table_schem=%s,table_name=%s\n",table_cat,table_schem,table_name);
     ErrorProcess(SQL_HANDLE_STMT,hstmt2); 
     continue;
   }
   SQLBindCol(hstmt2,4,SQL_C_CHAR,column_name,80,&dwDBbuf[4]);
   SQLBindCol(hstmt2,5,SQL_C_SHORT,&data_type,2,&dwDBbuf[5]);
   SQLBindCol(hstmt2,6,SQL_C_CHAR,type_name,80,&dwDBbuf[6]);
   SQLBindCol(hstmt2,8,SQL_C_LONG,&column_size,4,&dwDBbuf[7]);
   n=0;size_flag=0;
   
   while((sqlreturn=SQLFetch(hstmt2))==SQL_SUCCESS||sqlreturn==SQL_SUCCESS_WITH_INFO)
   {
     sprintf(szText,"<> %s %s %d %d\n",column_name,type_name,column_size,data_type);
     fputs(szText,fp1);
	 strcpy((char *)szName[n],(const char *)column_name);
	 smType[n]=data_type;
	 strcpy((char *)szType[n],(const char *)type_name);
	 dwSize[n]=column_size;
     if(column_size>512) size_flag++;
	 n++;
	 if(n>254) break;
   }
   SQLFreeStmt(hstmt2,SQL_UNBIND);
   SQLCloseCursor(hstmt2);
   strcpy(szText,"");
   for(i=0;i<n;i++) {
	 strcat(szText,(const char *)szName[i]);
	 if(i<n-1) strcat(szText,",");
   }
   if(strlen(szText)==0) continue;
  sprintf((char *)szSelect,"select %s from %s.%s",szText,table_schem,table_name);
    // sprintf((char *)szSelect,"select %s from %s",szText,table_name);
   sprintf((char *)szText,"%s\n",szSelect);
   if(size_flag!=0) continue;
   SQLSetStmtAttr(hstmt2,SQL_ATTR_CURSOR_TYPE,SQL_CURSOR_FORWARD_ONLY,0);
 
   sqlreturn=SQLExecDirect(hstmt2,szSelect,SQL_NTS);
   if((sqlreturn!=SQL_SUCCESS_WITH_INFO)&&(sqlreturn!=SQL_SUCCESS)) {
     printf("SQLExecDirect 1 error!\n stmt=%s\n",szSelect);
     ErrorProcess(SQL_HANDLE_STMT,hstmt2); 
     SQLCloseCursor(hstmt2);
     continue;
   }
   for(i=0;i<n;i++) 
   {
	 switch(smType[i])
	 {
	   case SQL_CHAR: case SQL_VARCHAR: case SQL_DATETIME: case SQL_DECIMAL:
         SQLBindCol(hstmt2,(unsigned short)i+1,SQL_C_CHAR,all_type[i].szBuf,255,&dwDBbuf[i]);
		 break;
	   case SQL_INTEGER:
         SQLBindCol(hstmt2,(unsigned short)i+1,SQL_C_LONG,&all_type[i].dwBuf,4,&dwDBbuf[i]);
		 break;
	   case SQL_SMALLINT:
         SQLBindCol(hstmt2,(unsigned short)i+1,SQL_C_SHORT,&all_type[i].wBuf,2,&dwDBbuf[i]);
		 break;
	   case SQL_FLOAT:
         SQLBindCol(hstmt2,(unsigned short)i+1,SQL_C_DOUBLE,&all_type[i].fBuf,8,&dwDBbuf[i]);
		 break;
	   case SQL_REAL: case SQL_DOUBLE:
         SQLBindCol(hstmt2,(unsigned short)i+1,SQL_C_FLOAT,&all_type[i].szBuf,8,&dwDBbuf[i]);
		 break;
	   default:
		 break;
	 }
   }
   strcpy(szData,"// ");
   while((sqlreturn=SQLFetch(hstmt2))==SQL_SUCCESS||sqlreturn==SQL_SUCCESS_WITH_INFO)
   {
	 for(i=0;i<n-1;i++)
	 {
	   switch(smType[i]) 
	   {
	   case SQL_CHAR: case SQL_VARCHAR: case SQL_DATETIME: case SQL_DECIMAL:
		   sprintf(szText,"\'%s\',",all_type[i].szBuf);
		   strcat(szData,szText);
		 break;
	   case SQL_INTEGER:
		   sprintf(szText,"\'%ld\',",all_type[i].dwBuf);
		   strcat(szData,szText);
		 break;
	   case SQL_SMALLINT:
		   sprintf(szText,"\'%d\',",all_type[i].wBuf);
		   strcat(szData,szText);
		 break;
	   case SQL_FLOAT:
		   sprintf(szText,"\'%f\',",all_type[i].fBuf);
		   strcat(szData,szText);
		 break;
	   case SQL_REAL:case SQL_DOUBLE:
		   sprintf(szText,"\'%lf\',",all_type[i].dBuf);
		   strcat(szData,szText);
		 break;
	   default:
		 sprintf(szText,"\'%d\',",all_type[i].szBuf);
		 strcat(szData,szText);
		 break;
	   }
	 }
	 switch(smType[n-1]) 
	   {
	   case SQL_CHAR: case SQL_VARCHAR: case SQL_DATETIME: case SQL_DECIMAL:
		   sprintf(szText,"\'%s\'",all_type[i].szBuf);
		   strcat(szData,szText);
		 break;
	   case SQL_INTEGER:
		   sprintf(szText,"\'%ld\'",all_type[i].dwBuf);
		   strcat(szData,szText);
		 break;
	   case SQL_SMALLINT:
		   sprintf(szText,"\'%d\'",all_type[i].wBuf);
		   strcat(szData,szText);
		 break;
	   case SQL_FLOAT:
		   sprintf(szText,"\'%f\'",all_type[i].fBuf);
		   strcat(szData,szText);
		 break;
	   case SQL_REAL:case SQL_DOUBLE:
		   sprintf(szText,"\'%lf\'",all_type[i].dBuf);
		   strcat(szData,szText);
		 break;
	   default:
		   sprintf(szText,"\'%d\'",all_type[i].wBuf);
		   strcat(szData,szText);
		 break;
	   }
	 strcat(szData,"  end\n");
	 printf("%s\n",szData);
     fputs(szData,fp1);
	 strcpy(szData,"// ");
   }
   SQLFreeStmt(hstmt2,SQL_UNBIND);
   SQLCloseCursor(hstmt2);
 }
 SQLFreeHandle(SQL_HANDLE_STMT,hstmt2);
 SQLFreeHandle(SQL_HANDLE_STMT,hstmt1);
 fclose(fp1);
 return(0);
}

int connect_db()
{
 SQLRETURN sqlreturn;
 sqlreturn=SQLAllocHandle(SQL_HANDLE_ENV,NULL,&henv1);
 if((sqlreturn!=SQL_SUCCESS_WITH_INFO)&&(sqlreturn!=SQL_SUCCESS)) {
   printf("SQLAllocHandle(henv) error!\n");
   return(-1);
 }
 sqlreturn=SQLSetEnvAttr(henv1,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);
 if((sqlreturn!=SQL_SUCCESS_WITH_INFO)&&(sqlreturn!=SQL_SUCCESS)) {
   printf("SQLSetEnvAttr error!\n");
   return(-1);
 }
 sqlreturn=SQLAllocHandle(SQL_HANDLE_ENV,NULL,&henv2);
 if((sqlreturn!=SQL_SUCCESS_WITH_INFO)&&(sqlreturn!=SQL_SUCCESS)) {
   printf("SQLAllocHandle(henv) error!\n");
   return(-1);
 }
 sqlreturn=SQLSetEnvAttr(henv2,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);
 if((sqlreturn!=SQL_SUCCESS_WITH_INFO)&&(sqlreturn!=SQL_SUCCESS)) {
   printf("SQLSetEnvAttr error!\n");
   return(-1);
 }
 sqlreturn=SQLAllocHandle(SQL_HANDLE_DBC,henv1,&hdbc1);
 if((sqlreturn!=SQL_SUCCESS_WITH_INFO)&&(sqlreturn!=SQL_SUCCESS)) {
   printf("SQLAllocHandle(hdbc1) error!\n");
   return(-1);
 }
 sqlreturn=SQLConnect(hdbc1,(SQLCHAR *)DataSource,SQL_NTS,(unsigned char *)UserName,SQL_NTS,(unsigned char *)Password,SQL_NTS);
 if((sqlreturn!=SQL_SUCCESS_WITH_INFO)&&(sqlreturn!=SQL_SUCCESS)) {
   printf("SQLConnect 1 error!\n");
   return(-1);
 }
 sqlreturn=SQLAllocHandle(SQL_HANDLE_DBC,henv2,&hdbc2);
 if((sqlreturn!=SQL_SUCCESS_WITH_INFO)&&(sqlreturn!=SQL_SUCCESS)) {
   printf("SQLAllocHandle(hdbc2) error!\n");
   return(-1);
 }
 sqlreturn=SQLConnect(hdbc2,(SQLCHAR *)DataSource,SQL_NTS,(unsigned char *)UserName,SQL_NTS,(unsigned char *)Password,SQL_NTS);
 if((sqlreturn!=SQL_SUCCESS_WITH_INFO)&&(sqlreturn!=SQL_SUCCESS)) {
   printf("SQLConnect 2 error!\n");
   return(-1);
 }
 return(0);
}

int disconnect_db()
{
 SQLDisconnect(hdbc1);
 SQLDisconnect(hdbc2);
 SQLFreeHandle(SQL_HANDLE_DBC,hdbc1);
 SQLFreeHandle(SQL_HANDLE_DBC,hdbc2);
 SQLFreeHandle(SQL_HANDLE_ENV,henv1);
 SQLFreeHandle(SQL_HANDLE_ENV,henv2);
 return(0);
}

void ErrorProcess(SQLSMALLINT handle_type,SQLHANDLE handle) 
{
 SQLRETURN sqlreturn=SQL_SUCCESS;
 UCHAR szSqlState[6]="",szErrorMsg[1024]="";
 SDWORD pfNativeError=0L;
 SWORD pcbErrorMsg=0,i;
 SDWORD SS_MsgState=0,SS_Severity=0;
 SQLINTEGER RecordNum;
 
 SQLGetDiagField(handle_type,handle,0,SQL_DIAG_NUMBER,&RecordNum,SQL_IS_INTEGER,NULL);
 for(i=1;i<=RecordNum;i++) {
   if(SQLGetDiagRec(handle_type,handle,i,szSqlState,&pfNativeError,szErrorMsg,1023,&pcbErrorMsg)!=SQL_NO_DATA) {
     printf("ODBC Error Number = %s\n",szSqlState);
     printf("ODBC Locat Error Number = %d\n",pfNativeError);
     printf("ODBC Error Msg = %s\n",szErrorMsg);
   }
 }
}

int recover()
{
	SQLRETURN sqlreturn;
	char szText[2048],temp[400],table[20];
	SQLCHAR szUpdate[2048];
	FILE *fp,*fp1;
	strcpy(szText,"");
	fp = fopen("odbcapi.txt","r");
	
	if(fp == NULL)
	{
		printf("備份文件不存在!\n");
		return 0;
	}
	fp1= fopen("errbackup.txt","w");
	sqlreturn=SQLAllocHandle(SQL_HANDLE_STMT,hdbc1,&hstmt1);
	if((sqlreturn!=SQL_SUCCESS_WITH_INFO)&&(sqlreturn!=SQL_SUCCESS)) 
	{
		printf("SQLAllocHandle(hstmt1) error!\n");
		return (-1);
	}
	SQLSetStmtAttr(hstmt1,SQL_ATTR_CURSOR_TYPE,SQL_CURSOR_FORWARD_ONLY,0);
	fscanf(fp,"%s",temp);
	while(!feof(fp))
	{
		
		if(strcmp(temp,"TABLE")==0)
		{
		//	SQLFreeStmt(hstmt1,SQL_UNBIND);
		//	SQLCloseCursor(hstmt1);
		//  SQLSetStmtAttr(hstmt1,SQL_ATTR_CURSOR_TYPE,SQL_CURSOR_FORWARD_ONLY,0);
			fscanf(fp,"%s",table);
			strcpy(szText,"");
			strcat(szText,"create table ");
			strcat(szText,table);
			strcat(szText,"(");
			fscanf(fp,"%s",temp);
			fscanf(fp,"%s",temp);
			fscanf(fp,"%s",temp);
			while(strcmp(temp,"<>")==0)
			{
				fscanf(fp,"%s",temp);
				strcat(szText,temp);
			
				strcat(szText," ");
				fscanf(fp,"%s",temp);
				if(strcmp(temp,"id")==0 || strcmp(temp,"tid")==0 || strcmp(temp,"empid")==0)
				{
					strcat(szText,"varchar");
					strcat(szText,"(");
					fscanf(fp,"%s",temp);
					if(strcmp(temp,"identity")==0)
						fscanf(fp,"%s",temp);
					strcat(szText,temp);
					strcat(szText,")");
					fscanf(fp,"%s",temp);
				}
				else
				if(strcmp(temp,"char")==0 ||strcmp(temp,"varchar")==0)
				{
					strcat(szText,temp);
					strcat(szText,"(");
					fscanf(fp,"%s",temp);
					if(strcmp(temp,"identity")==0)
						fscanf(fp,"%s",temp);
					strcat(szText,temp);
					strcat(szText,")");
					fscanf(fp,"%s",temp);					
				}
				else
				{
					strcat(szText,temp);
					fscanf(fp,"%s",temp);
					if(strcmp(temp,"identity")==0)
						fscanf(fp,"%s",temp);
					fscanf(fp,"%s",temp);
				}
					fscanf(fp,"%s",temp);
				if(strcmp(temp,"<>")==0)
				{
					strcat(szText,",");
				}
				else 
				{
					strcat(szText,");");
				}
			}
			if(strlen(szText)==0) continue;
			sprintf((char*)szUpdate,"%s",szText);
		//	printf("%s\n",szText);
			sqlreturn = SQLExecDirect(hstmt1,(SQLCHAR *)szUpdate,SQL_NTS);
			if((sqlreturn!=SQL_SUCCESS_WITH_INFO)&&(sqlreturn!=SQL_SUCCESS))
			{
			//	printf("SQLExec \"%s\" error!\n",szUpdate);
				fputs(szText,fp1);
				fputs("\n",fp1);
			//	 return(-1);
			}
			while(strcmp(temp,"//") ==0)
			{
				strcpy(szText,"");
				strcat(szText,"INSERT INTO ");
				strcat(szText,table);
				strcat(szText," VALUES( ");
				fscanf(fp,"%s",temp);
				while(strcmp(temp,"end")!=0 )
				{	
					strcat(szText,temp);
					strcat(szText," ");						
					fscanf(fp,"%s",temp);
				}
				strcat(szText,")");
				sprintf((char*)szUpdate,"%s",szText);
				//printf("%s\n",szText);
				sqlreturn = SQLExecDirect(hstmt1,(SQLCHAR *)szUpdate,SQL_NTS);
				if((sqlreturn!=SQL_SUCCESS_WITH_INFO)&&(sqlreturn!=SQL_SUCCESS))
				{
					//printf("SQLEXEC \"%s\" error!\n",szText);
					fputs(szText,fp1);
					fputs("\n",fp1);
					// return(-1);
				}
				fscanf(fp,"%s",temp);
			}
			
		
		}
		else
		{
			 printf("數據錯誤!\n");
			 exit(0);
		}
	}
	SQLFreeHandle(SQL_HANDLE_STMT,hstmt2);
	SQLFreeHandle(SQL_HANDLE_STMT,hstmt1);
	fclose(fp);
	fclose(fp1);
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人777| 欧美欧美欧美欧美首页| 欧美人与禽zozo性伦| 欧美—级在线免费片| 日韩中文字幕不卡| 91视频观看视频| 国产日韩精品一区二区三区| 亚洲成精国产精品女| 色综合天天狠狠| 欧美激情中文字幕一区二区| 久久国产剧场电影| 欧美一卡二卡在线| 午夜视频一区二区| 欧美亚洲综合网| 亚洲精品国产精品乱码不99 | 国产精品国产三级国产有无不卡 | 国产精品一二三| 日韩一二在线观看| 午夜成人免费视频| 欧美日韩一区二区在线观看视频| 国产精品久久久久毛片软件| 九九精品一区二区| 亚洲精品一区二区三区四区高清| 丝袜脚交一区二区| 欧美一区三区四区| 人人精品人人爱| 欧美成人三级在线| 韩国av一区二区三区四区| 26uuu国产一区二区三区| 蜜臀av亚洲一区中文字幕| 欧美一区二区三区在| 久久精品国产在热久久| 日韩免费性生活视频播放| 老司机午夜精品| 久久综合av免费| 国产激情视频一区二区三区欧美| 2023国产一二三区日本精品2022| 国产一区二区伦理| 欧美国产激情一区二区三区蜜月| 成人看片黄a免费看在线| 国产精品青草综合久久久久99| 丁香婷婷综合色啪| 亚洲人午夜精品天堂一二香蕉| 色综合久久久久综合99| 五月激情综合色| 欧美精品一区二区三区久久久| 国产成人精品免费视频网站| 中文无字幕一区二区三区| 日本福利一区二区| 青娱乐精品视频在线| 久久色在线观看| 91麻豆国产自产在线观看| 午夜久久久久久久久| 欧美videos中文字幕| 暴力调教一区二区三区| 亚洲五月六月丁香激情| 欧美mv日韩mv| 91麻豆成人久久精品二区三区| 婷婷六月综合网| 国产视频一区二区在线观看| 欧美在线观看一二区| 国产综合色产在线精品| 亚洲人成小说网站色在线| 91精品啪在线观看国产60岁| 福利一区二区在线| 亚洲成va人在线观看| 国产欧美综合在线| 91精品午夜视频| 一本色道久久综合亚洲91| 久久99精品国产| 五月综合激情日本mⅴ| 欧美国产精品一区二区| 91精品国产综合久久福利| 不卡区在线中文字幕| 老鸭窝一区二区久久精品| 亚洲免费观看高清完整版在线观看| 日韩欧美国产电影| 色天天综合久久久久综合片| 国产精品综合二区| 日韩成人一区二区| 亚洲另类春色校园小说| 久久精品夜色噜噜亚洲a∨| 777欧美精品| 欧美三级电影在线观看| 99久久久久久99| 国产精品中文欧美| 乱中年女人伦av一区二区| 五月婷婷综合激情| 一区二区不卡在线视频 午夜欧美不卡在| 日韩视频免费观看高清在线视频| 一本久道中文字幕精品亚洲嫩| 国产91精品一区二区麻豆网站| 久久激情五月激情| 午夜电影网亚洲视频| 亚洲小说春色综合另类电影| 国产精品美女www爽爽爽| 精品国产成人在线影院| 日韩午夜激情免费电影| 欧美久久久久免费| 欧美日产在线观看| 欧美日韩综合色| 欧美三级蜜桃2在线观看| 欧美在线不卡一区| 在线免费精品视频| 欧美视频一区二区三区| 欧美日韩性生活| 欧美群妇大交群的观看方式| 欧美日韩国产小视频| 欧美日产国产精品| 91精品麻豆日日躁夜夜躁| 91 com成人网| 日韩一区二区三区电影| 日韩精品一区二区在线| 日韩亚洲欧美在线观看| 日韩欧美成人一区| 久久奇米777| 欧美国产激情一区二区三区蜜月| 中文av一区二区| 最新国产精品久久精品| 亚洲精品乱码久久久久久| 夜夜爽夜夜爽精品视频| 婷婷亚洲久悠悠色悠在线播放| 奇米精品一区二区三区在线观看一 | 国产清纯美女被跳蛋高潮一区二区久久w| 欧美v亚洲v综合ⅴ国产v| 国产欧美视频一区二区| 中文字幕成人在线观看| 一区二区三区**美女毛片| 五月婷婷综合激情| 精品一区二区三区日韩| 国产伦精品一区二区三区免费| 成人性视频免费网站| 91香蕉视频污在线| 欧美一级夜夜爽| 欧美韩日一区二区三区| 一区二区三区不卡在线观看| 奇米影视在线99精品| 成人午夜av电影| 欧美日韩1区2区| 中文字幕高清一区| 亚洲成人动漫一区| 国内欧美视频一区二区| 色综合视频在线观看| 日韩三级中文字幕| 国产精品丝袜黑色高跟| 亚洲成人第一页| 丁香婷婷综合激情五月色| 91福利小视频| 国产欧美一区二区三区沐欲| 亚洲午夜羞羞片| 丁香婷婷综合色啪| 51精品国自产在线| 中文字幕欧美国产| 五月综合激情日本mⅴ| 成人午夜电影小说| 91精品国产综合久久精品性色| 国产精品天天摸av网| 日韩在线观看一区二区| 成人免费视频播放| 日韩欧美美女一区二区三区| 中文字幕亚洲区| 激情图区综合网| 欧美日韩黄色影视| 国产精品青草综合久久久久99| 免费成人在线网站| 欧美午夜一区二区三区免费大片| 国产亚洲精品资源在线26u| 日韩精品一二三区| 91成人在线免费观看| 国产亚洲欧美在线| 美腿丝袜在线亚洲一区| 欧美日韩一卡二卡三卡| 国产精品久久久久久久久搜平片| 七七婷婷婷婷精品国产| 欧美亚洲高清一区二区三区不卡| 久久日韩粉嫩一区二区三区| 免费视频一区二区| 制服丝袜一区二区三区| 亚洲尤物视频在线| 色综合天天性综合| 国产精品成人免费在线| 成人小视频免费观看| 精品国产91乱码一区二区三区| 日韩中文字幕区一区有砖一区| 欧洲亚洲精品在线| 亚洲女人****多毛耸耸8| 成人午夜免费电影| 欧美国产视频在线| 国产成人精品一区二| 久久久国产一区二区三区四区小说| 免费在线观看不卡| 欧美一级在线视频| 蜜臀99久久精品久久久久久软件| 69堂精品视频| 奇米888四色在线精品| 日韩精品影音先锋| 国产一区二区三区| 国产免费成人在线视频| av网站免费线看精品| 日韩毛片高清在线播放|