精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

開源項目:數據庫表結構生成文檔工具

開源
今天給大家分享我自己編寫的數據庫表結構文檔生成工具,方便大家在實際開發當中,可以很方便導出業務系統的表結構,也可以作為項目驗收文檔中數據庫設計文檔使用。這樣可以大大減少編寫數據庫表結構文檔的時間,有需要的朋友歡迎下載或者溝通交流!

一、軟件介紹

今天給大家分享我自己編寫的數據庫表結構文檔生成工具,方便大家在實際開發當中,可以很方便導出業務系統的表結構,也可以作為項目驗收文檔中數據庫設計文檔使用。這樣可以大大減少編寫數據庫表結構文檔的時間,有需要的朋友歡迎下載或者溝通交流!

二、技術框架

● 編程語言:C# ( Net Framework4.5.5)

● 數據庫技術框架:Dapper

● 導出Word文檔:NPOI

● 訪問方式:WinForm窗體應用程序,Windows操作系統可以直接運行

三、功能介紹

● 支持SQLServer、MySQL(5.7、8.0)、SQLite 三種類型的數據,持續更新

● 支持Word、Html、MarkDown 三種格式的導出

● 導出內容包含數據表(字段詳情、字段注釋、長度、默認值等)、創建表腳本、視圖及視圖腳本、存儲過程及腳本

● 支持生成文檔的同時直接打開文檔

● 支持數據庫備份(目前只支持SQLServer導出bak備份文件)

四、代碼展示

1、獲取數據庫信息部分代碼

/// <summary>
/// 獲取數據庫字符串
/// </summary>
/// <param name="servername"></param>
/// <param name="uid"></param>
/// <param name="pwd"></param>
/// <param name="db"></param>
/// <returns></returns>
public string GetConnectioning(string servername, string uid, string pwd, string db, string port)
{
return string.Format("server={0};uid={1};pwd={2};database={3}", servername, uid, pwd, db);
}
/// <summary>
/// 獲取數據庫列表
/// </summary>
/// <param name="conStr"></param>
/// <returns></returns>
public List<string> GetDBNameList(string conStr)
{
//List<DBName> list =new List<DBName>();
string sql = "select [name] from master.dbo.sysdatabases where DBId>6 Order By [Name] ";
try
{
using (SqlConnection connection = new SqlConnection(conStr))
{
var list = connection.Query<string>(sql).ToList();
return list;
}
}
catch
{
return null;
}

}

public List<DBModel> GetDBList(string conStr)
{
//List<DBName> list =new List<DBName>();
string sql = "select [name] from master.dbo.sysdatabases where DBId>6 Order By [Name] ";
try
{
using (SqlConnection connection = new SqlConnection(conStr))
{
var list = connection.Query<DBModel>(sql).ToList();
return list;
}
}
catch
{
return null;
}

}
/// <summary>
/// 獲取特定數據庫的表名列表
/// </summary>
/// <param name="conStr"></param>
/// <returns></returns>

public List<TableModel> GetDBTableList(string conStr, string dbName = "")
{
var list = new List<TableModel>();
//string sql = "SELECT TABLE_NAME as name FROM INFORMATION_SCHEMA.TABLES where TABLE_TYPE='BASE TABLE' ";
string sql = "select a.name AS tableName,CONVERT(NVARCHAR(100),isnull(g.[value],'')) AS tableDesc from sys.tables a left join sys.extended_properties g on (a.object_id = g.major_id AND g.minor_id = 0)";
try
{
using (SqlConnection connection = new SqlConnection(conStr))
{
list = connection.Query<TableModel>(sql).ToList();
}
}
catch
{

}
return list;
}
/// <summary>
/// 獲取特定數據庫里面的存儲過程
/// </summary>
/// <param name="conStr"></param>
/// <param name="db"></param>
/// <returns></returns>
public List<ProcModel> GetProcList(string conStr, string dbName = "")
{
var list = new List<ProcModel>();
string sql = @" select name as procName, (select text from syscomments where id=OBJECT_ID(name)) as proDerails
from dbo.sysobjects o where OBJECTPROPERTY(id, N'IsProcedure') = 1 order by name ";
try
{
using (SqlConnection connection = new SqlConnection(conStr))
{
list = connection.Query<ProcModel>(sql).ToList();
}
}
catch
{

}
return list;
}
/// <summary>
/// 獲取特定數據庫里面的視圖
/// </summary>
/// <param name="conStr"></param>
/// <param name="db"></param>
/// <returns></returns>
public List<ViewModel> GetViewList(string conStr, string dbName = "")
{
var list = new List<ViewModel>();
string sql = @" select name as viewName, (select text from syscomments where id=OBJECT_ID(name)) as viewDerails
from dbo.sysobjects o where OBJECTPROPERTY(id, N'IsView') = 1 order by name ";
try
{
using (SqlConnection connection = new SqlConnection(conStr))
{
list = connection.Query<ViewModel>(sql).ToList();
}
}
catch
{

}
return list;
}

/// <summary>
/// 獲取字段的信息
/// </summary>
/// <param name="tableName"></param>
/// <param name="conStr"></param>
/// <returns></returns>
public List<TableDetail> GetTableDetail(string tableName, string conStr, string dbName = "")
{
var list = new List<TableDetail>();
StringBuilder sb = new StringBuilder();
sb.Append("SELECT [index] = a.colorder, Title = a.name, isMark = CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN '1' ELSE '0' END, ");
sb.Append("isPK = CASE WHEN EXISTS(SELECT 1 FROM sysobjects WHERE xtype = 'PK' AND parent_obj = a.id AND name IN(SELECT name FROM sysindexes WHERE indid IN(SELECT indid FROM sysindexkeys WHERE id = a.id AND colid = a.colid)) ) THEN '1' ELSE '0' END, ");
sb.Append(" FieldType = b.name,fieldLenth = COLUMNPROPERTY(a.id, a.name, 'PRECISION'),isAllowEmpty = CASE WHEN a.isnullable = 1 THEN '1' ELSE '0' END, defaultValue = ISNULL(e.text, ''), fieldDesc = ISNULL(g.[value], '') ");
sb.Append("FROM syscolumns a LEFT JOIN systypes b ON a.xusertype = b.xusertype INNER JOIN sysobjects d ON a.id = d.id AND d.xtype = 'U' AND d.name <> 'dtproperties' LEFT JOIN syscomments e ON a.cdefault = e.id ");
sb.Append("LEFT JOIN sys.extended_properties g ON a.id = G.major_id AND a.colid = g.minor_id LEFT JOIN sys.extended_properties f ON d.id = f.major_id AND f.minor_id = 0");
//--如果只查詢指定表,加上此紅色where條件,tablename是要查詢的表名;去除紅色where條件查詢說有的表信息
sb.Append("WHERE d.name = '" + tableName + "' ORDER BY a.id, a.colorder, d.name");
try
{
using (SqlConnection connection = new SqlConnection(conStr))
{
list = connection.Query<TableDetail>(sb.ToString()).ToList();
}
}
catch
{ }

return list;
}


2、導出Html文檔代碼

/// <summary>
/// 生成html文件
/// </summary>
/// <param name="list"></param>
/// <param name="conStr"></param>
/// <param name="db"></param>
/// <param name="type"></param>
public void CreateToHtml(List<TableModel> list, string conStr, string db, int type, List<string> checkList)
{
StringBuilder sb = new StringBuilder();
sb.Append("<html><meta charset=\"utf-8\" /><meta http-equiv = \"Content-Language\" content = \"zh-CN\" >");
sb.Append("<head><title>數據庫說明文檔</title><body>");
sb.Append("<style type=\"text/css\">\n");
sb.Append("body { font-size: 9pt;}\n");
sb.Append(".styledb { font-size: 14px; }\n");
sb.Append(".styletab {font-size: 14px;padding-top: 15px; }\n</style></head><body>");
sb.Append("<h1 style=\"text-align:center;\">" + db + "數據庫說明文檔</h1>");


GetDBService(type);

#region 創建一個表格
if (checkList.Where(m => m.Equals("表")).Count() > 0)
{
sb.Append("<h2>一、表結構</h2>");
sb.Append("");
sb.Append("");
if (list.Count > 0)
{
foreach (var item in list)
{
if (item.tableDesc != null && item.tableDesc != "")
{
sb.Append("<h3>表名:" + item.tableName + "(" + item.tableDesc + ")</h3>");
}
else
{
sb.Append("<h3>表名:" + item.tableName + "</h3>");
}
sb.Append(" <table cellspacing=\"0\" cellpadding=\"5\" border=\"1\" width=\"100%\" bordercolorlight=\"#4F7FC9\" bordercolordark=\"#D3D8E0\">");
sb.Append("<thead bgcolor=\"#E3EFFF\"> <th>序號</th><th>字段名稱</th><th>標識</th><th>主鍵</th><th>字段類型</th><th>字段長度</th><th>允許空值</th><th>字段默認值</th><th>字段備注</th></thead>");
sb.Append("<tbody>");
//從第二行開始 因為第一行是表頭
int i = 1;
var tabledetaillist = service.GetTableDetail(item.tableName, conStr, db);


if (tabledetaillist != null && tabledetaillist.Count > 0)
{
foreach (var itm in tabledetaillist)
{
sb.Append("<tr>");
sb.Append("<td>" + itm.index + "</td>");
sb.Append("<td>" + itm.Title + "</td>");
sb.Append("<td>" + itm.isMark + "</td>");
sb.Append("<td>" + itm.isPK + "</td>");
sb.Append("<td>" + itm.FieldType + "</td>");
sb.Append("<td>" + itm.fieldLenth + "</td>");
sb.Append("<td>" + itm.isAllowEmpty + "</td>");
sb.Append("<td>" + itm.defaultValue + "</td>");
sb.Append("<td>" + itm.fieldDesc + "</td>");
sb.Append("</tr>");
i++;
}
}
sb.Append("</tbody></table>");

sb.Append("<h4>" + item.tableName + "建表腳本</h4><br/>");
sb.Append("<span>" + service.GetTableSQL(item.tableName, conStr) + "</span>");


}
}
}
#endregion

#region 存儲過程
if (checkList.Where(m => m.Equals("存儲過程")).Count() > 0)
{
List<ProcModel> proclist = new List<ProcModel>();
proclist = service.GetProcList(conStr, db);
sb.Append("<h2>二、存儲過程</h2>");
if (proclist != null && proclist.Count > 0)
{
foreach (var item in proclist)
{
sb.Append("<h3>存儲過程名稱:" + item.procName + "</h3>");
sb.Append("<span>" + item.proDerails + "</span>");
}
}
}
#endregion

#region 視圖
if (checkList.Where(m => m.Equals("視圖")).Count() > 0)
{
List<ViewModel> viewlist = new List<ViewModel>();
viewlist = service.GetViewList(conStr, db);
sb.Append("<h2>三、視圖</h2>");
if (viewlist.Count > 0)
{

foreach (var item in viewlist)
{
sb.Append("<h3>視圖名稱:" + item.viewName + "</h3>");
sb.Append("<span>" + item.viewDerails + "</span>");
}
}
}
#endregion

sb.Append("</body></html>");
sb.ToString();
string filename = db + "-數據庫說明文檔";//文件名
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.DefaultExt = "html";
saveDialog.Filter = "html文件|*.html";
saveDialog.FileName = filename;
saveDialog.ShowDialog();
filename = saveDialog.FileName;
if (filename.IndexOf(":") < 0) return; //被點了取消
StreamWriter sw1 = new StreamWriter(saveDialog.FileName, false);
sw1.WriteLine(sb);
sw1.Close();
System.Diagnostics.Process.Start(filename);

}

五、運行效果

應用程序主界面

支持三種生成文檔類型:每次只能選擇一種,推薦使用markdown格式

Word文檔生成效果

Html文檔生成效果

MarkDown文檔效果

圖片

針對SQLServer數據庫備份

圖片

六、  項目開源地址

GitHub:??https://github.com/hgmsq/SqlToDocTool??

Gitee:??https://gitee.com/hgm1989/SqlToDocTool??

Gitcode:??https://gitcode.net/xishining/SqlToDocTool???

責任編輯:武曉燕 來源: IT技術分享社區
相關推薦

2020-12-24 10:20:43

文檔工具語言

2023-04-18 18:22:31

開源工具數據庫

2011-08-04 15:55:25

SQL Server數

2020-08-06 11:45:37

數據庫文檔Swagger

2021-01-10 15:29:53

開源數據庫數據庫

2020-07-29 10:55:07

數據庫工具技術

2010-05-24 13:14:19

創建MySQL

2019-09-22 21:34:59

數據庫平滑變更表結構

2021-07-07 10:12:08

數據庫工具技術

2022-07-27 08:12:44

SchemaHero云原生

2011-05-13 13:54:02

數據庫文檔數據庫

2021-05-16 14:27:17

開源數據庫開源數據庫

2011-03-25 13:55:17

PHP開源數據庫

2024-07-09 08:27:30

2011-03-07 13:30:53

Oracle數據庫

2009-12-17 09:31:02

Ruby on Rai

2022-07-11 08:00:00

開源工具DoppelGANg

2011-09-01 14:00:11

SQL Server 存儲過程顯示表結構
點贊
收藏

51CTO技術棧公眾號

91精品美女| 黄色香蕉视频在线观看| 色偷偷偷在线视频播放| 国产欧美视频一区二区三区| 成人高h视频在线| 国产午夜小视频| 禁果av一区二区三区| 欧美一级二级三级蜜桃| 久久久久久久久久久久久国产精品| 国产三级电影在线观看| 国产成都精品91一区二区三| 国产福利成人在线| 久久精品99国产精| 日韩欧美一区二区三区在线视频| 亚洲的天堂在线中文字幕| 成人中文字幕av| 678在线观看视频| 国产精品久久久久久久久快鸭 | 深夜福利一区二区| 成人在线视频免费播放| 99精品美女视频在线观看热舞| 五月婷婷色综合| 日韩video| 成年人视频在线观看免费| 不卡视频一二三四| 69堂成人精品视频免费| 日本妇乱大交xxxxx| 夜夜精品视频| 欧美俄罗斯乱妇| 欧美日韩性生活视频| 精品国产一区二区三区久久久蜜月| 激情综合网俺也去| 国产www视频在线观看| 国产精品午夜免费| 久久人人九九| 可以免费看毛片的网站| 日韩av网址大全| www.av免费| 欧美xxx.com| 高清久久久久久| 国产一区香蕉久久| 欧美人一级淫片a免费播放| 亚洲成人直播| 欧美黄色片在线观看| 欧美精选一区二区| 久久97精品久久久久久久不卡 | 亚洲黑人在线| 欧美午夜电影一区| 激情五月亚洲色图| 性欧美videohd高精| 红桃av永久久久| 亚洲区第一页| 国内成人免费视频| 日韩免费在线看| 黄色av网站免费观看| 日韩午夜在线| 欧美性在线视频| 99久热在线精品996热是什么| 欧美日韩国产欧| 欧美三级黄网| 日本少妇一级片| 国产精品久久久久久久天堂| 国产传媒一区二区三区| 亚洲精品国产精品国自产网站按摩| 亚洲一区二区免费看| 国产一区二区三区精品在线观看| 国产免费a视频| 国产激情第一页| 国产欧美一区二区三区另类精品 | 手机看片福利日韩| 日批免费观看视频| 成人做爰视频www| 欧美午夜精品电影| 午夜不卡福利视频| 粉嫩一区二区三区四区公司1| 欧美zozozo| 精品国产av色一区二区深夜久久| 色橹橹欧美在线观看视频高清| 日韩精品视频在线播放| 亚洲一区二区自偷自拍| 久久久精品久久久久久96| 欧美激情亚洲国产| 欧美a视频在线观看| 男人的j进女人的j一区| 亚洲free嫩bbb| 欧美 日韩 国产 精品| 91免费看`日韩一区二区| 日本一区视频在线观看| av电影免费在线观看| 国产日本在线| 日韩国产一区二区| 久久夜色撩人精品| 国产第一页第二页| 男人的天堂成人在线| 精品国产一区二| 国产精品乱码久久久久| 欧美重口乱码一区二区| 欧美日本国产在线| 亚洲午夜精品久久久中文影院av | 九九视频精品免费| 99re视频在线| 国产资源在线播放| 亚洲激情男女视频| 50路60路老熟妇啪啪| 玖玖玖电影综合影院| 亚洲美女喷白浆| 69av视频在线| 乱一区二区av| 蜜桃视频在线观看91| 性欧美video高清bbw| 欧美视频一区二区三区| 给我看免费高清在线观看| 在线精品国产| 国产精品成人av在线| 日韩一级片免费观看| 中文字幕一区二区三区四区| www.com毛片| 亚洲精品a区| www国产精品com| 精品久久久久久久久久久久久久久久久久| 国产成人av影院| 亚洲一区二区三区涩| 涩涩视频在线免费看| 欧美电影免费观看完整版| 国产奶头好大揉着好爽视频| 成人午夜一级二级三级| 日韩av电影免费观看高清| 中文字幕不卡av| 亚洲一区二区久久久久久| 亚洲精品成人电影| 中文字幕日韩av资源站| 波多野结衣家庭教师视频| 日韩精品视频中文字幕| 日韩在线不卡视频| 欧日韩在线观看| 日韩精品xxx| 黄色网页在线免费看| 不卡的日韩av| 亚洲色图美国十次| 亚洲国产精品久久久男人的天堂 | 欧美一区二区黄| 任你操精品视频| 日韩国产成人精品| 日本不卡免费新一二三区| 白浆视频在线观看| 亚洲精品一区二区三区福利| 国产真实夫妇交换视频| 成人午夜大片免费观看| www.亚洲成人网| 97久久亚洲| 久久久最新网址| 色婷婷激情五月| 丁香5月婷婷久久| 国产专区精品| 欧美三级资源在线| 这里只有久久精品| 日韩福利视频网| 日韩电影天堂视频一区二区| 精品国产第一福利网站| 国产一区二区日韩精品欧美精品| 波多野结衣一区二区三区在线| 国产丝袜欧美中文另类| 狠狠热免费视频| 欧美高清视频在线观看mv| 亚洲精品乱码久久久久久黑人| 日本精品免费视频| 香蕉免费一区二区三区在线观看 | 欧美日韩在线一区二区| 五月天婷婷丁香网| 国产精品99久久久| 国产3p露脸普通话对白| 一本色道久久综合亚洲精品酒店 | 99久久激情视频| 日韩在线理论| 成人av资源网| 成人亚洲欧美| 久久夜色精品国产欧美乱| 日本黄色一区二区三区| 色哟哟国产精品| 色哟哟一一国产精品| 成人黄色在线看| 91蝌蚪视频在线观看| 欧美成人69| 日本欧洲国产一区二区| 国产日本亚洲| 青青青国产精品一区二区| 日本在线免费网| 亚洲国内高清视频| 亚洲图片中文字幕| 午夜激情久久久| 91ts人妖另类精品系列| 99久久99久久精品免费看蜜桃| 欧美午夜aaaaaa免费视频| 午夜精品国产| 日韩欧美亚洲日产国产| 国产精品x8x8一区二区| 国产精品美女主播在线观看纯欲| 日韩激情av| 一区国产精品视频| 中文字幕一区二区三区四| 三级小说欧洲区亚洲区| 国产日韩专区在线| 韩国美女久久| 欧美成人一区二区三区电影| 九色在线免费| 亚洲第一福利网站| a天堂视频在线| 欧美性色黄大片| 日韩经典在线观看| 亚洲男人的天堂网| 天天摸日日摸狠狠添| 99精品欧美一区| 麻豆传媒在线看| 久久电影网站中文字幕| 国产精品免费观看久久| 午夜久久99| 亚洲综合视频一区| 国产午夜一区| 鲁丝片一区二区三区| 99re热精品视频| 91精品久久久久久久久久入口| 亚洲人成在线网站| 久久久人成影片一区二区三区| 日本不卡三区| 自拍偷拍亚洲精品| 国产露出视频在线观看| 亚洲国产精久久久久久| 午夜精品在线播放| 国产福利精品一区二区| 999视频在线免费观看| 国产精品无码久久久久| 欧洲亚洲女同hd| 韩国精品一区| 国模吧一区二区| xxxx在线视频| 欧美激情乱人伦一区| 中文字幕有码在线观看| 欧美成人精品一区二区| 中文字幕中文字幕在线中高清免费版| 中文字幕在线日韩| 瑟瑟视频在线| 久久精品夜夜夜夜夜久久| 尤物网在线观看| 色偷偷亚洲男人天堂| 免费av网站在线看| 久久久国产精品免费| 成人ww免费完整版在线观看| 久久九九免费视频| 影院在线观看全集免费观看| 欧美肥婆姓交大片| 国产福利在线免费观看| 97国产精品人人爽人人做| yellow在线观看网址| 性欧美激情精品| 小h片在线观看| 国产精品9999| 亚洲色图图片| 超碰97在线资源| 亚洲v天堂v手机在线| 日本一区二区在线视频观看| 成人综合久久| 欧美少妇一区二区三区| 亚洲图片在线| 黄色片一级视频| 毛片不卡一区二区| 免费高清视频在线观看| 成人美女视频在线观看| 特大黑人巨人吊xxxx| 国产三级精品三级| 在线观看美女av| 亚洲观看高清完整版在线观看| 性无码专区无码| 欧美色中文字幕| 亚洲成a人片在线| 亚洲精品在线观看www| 91啦中文在线| 欧美国产日韩一区二区在线观看| 亚洲天堂av影院| 国产日韩在线免费| 红杏成人性视频免费看| 欧美在线日韩精品| 亚洲国产精品久久久久蝴蝶传媒| 人妻少妇精品久久| 日本美女视频一区二区| 亚洲AV无码久久精品国产一区| 99久久婷婷国产综合精品 | 精品成人自拍视频| 色综合久久久久久久久五月| 欧美99在线视频观看| 国产熟女高潮视频| 国产福利一区二区三区视频在线| 波多野结衣 在线| 亚洲精品国产无套在线观| 天天干在线播放| 日韩欧美中文一区二区| 噜噜噜在线观看播放视频| 欧美精品在线第一页| 日韩网站中文字幕| 国产高清在线一区二区| 日韩精品免费一区二区在线观看| 无码中文字幕色专区| 久久99久久久欧美国产| 国产一级二级在线观看| 樱花影视一区二区| 中文字幕免费视频观看| 亚洲激情小视频| 成人video亚洲精品| 国产精品久久久久久久久久三级 | 操bbb操bbb| 老司机精品久久| 中文视频在线观看| 亚洲欧美电影一区二区| 国产免费a视频| 亚洲女人天堂av| 成人免费观看在线观看| 91在线免费看片| 91亚洲国产成人久久精品| 日韩一级免费在线观看| 91小视频在线免费看| 国产在线观看你懂的| 日韩一区二区三区观看| 青青青青在线| 国产精品美女www爽爽爽视频| 香蕉久久夜色精品国产更新时间| 国产爆乳无码一区二区麻豆| 国产一区激情在线| 99热这里只有精品4| 欧美日韩在线播| 国产毛片av在线| 国产精品精品久久久久久| 国产精品嫩草影院在线看| 成人在线看视频| 91啪亚洲精品| 亚洲欧美一区二区三区在线观看| 亚洲国产三级网| 91黄页在线观看| 国产伦精品一区二区三毛| 国产精品黄色| 风韵丰满熟妇啪啪区老熟熟女| 亚洲免费av在线| 亚洲AV无码精品自拍| 欧美黑人xxx| 精品女人视频| 国产成人无码精品久久久性色| 91在线视频播放地址| 国产精品久久久久久99| 日韩精品在线影院| 高清不卡亚洲| 色狠狠久久av五月综合| 琪琪一区二区三区| 二区三区四区视频| 日韩精品一区在线| 丁香花在线高清完整版视频| 国产免费一区二区三区| 亚洲永久字幕| 日本黄色小视频在线观看| 欧美日韩1区2区| 精品国产99久久久久久| 成人精品一二区| 一本久道综合久久精品| 国产ts在线播放| 欧美日韩欧美一区二区| 69xxx在线| 黄色99视频| 视频在线观看91| 国产av 一区二区三区| 亚洲成年人在线| 国产另类xxxxhd高清| 一区在线电影| 国产宾馆实践打屁股91| 国产日产精品一区二区三区| 中文一区二区视频| 日韩精品一区二区三区中文字幕 | 神马影院一区二区| 国产剧情av麻豆香蕉精品| 日韩成人高清视频| 中文字幕精品国产| 9l亚洲国产成人精品一区二三| 日本黄色三级大片| 亚洲激情网站免费观看| 欧洲一区av| 亚洲一区二区三区视频播放| 一本色道久久综合亚洲精品高清| 国产欧美一区二区三区在线观看视频| 欧美一区二区久久| 周于希免费高清在线观看| 在线观看免费91| 91视频www| 97免费观看视频| 91精品国产91久久| 久久久久午夜电影| 波多野结衣福利| 日韩三级电影网址| 免费在线观看一区| 免费超爽大片黄| 中文字幕制服丝袜一区二区三区 | 在线看片第一页欧美| 中文字幕久久精品一区二区 | 欧美黄色免费网址| 中文字幕的久久|