精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

韩国免费在线视频| 青青草视频在线观看免费| baoyu135国产精品免费| 午夜伦理一区二区| 日本一区二区免费看| 国产精品国产av| 在线日韩电影| 色妞欧美日韩在线| 欧美一区二区免费在线观看| 2019年精品视频自拍| 一区二区三区色| 青青草成人激情在线| 精品国产无码一区二区| 久久久久看片| 欧美高清一级大片| 免费一级特黄3大片视频| 亚洲一区二区三区在线免费| 欧美在线观看18| 欧美午夜性视频| 欧美18hd| 国产无遮挡一区二区三区毛片日本| 成人精品在线观看| 亚洲精品中文字幕乱码三区91| 91精品国产麻豆国产在线观看| 日韩av在线导航| 日韩av自拍偷拍| 成人片免费看| 亚洲国产另类av| 视频一区二区视频| 草碰在线视频| 91麻豆免费视频| 国产高清在线一区二区| 97精品人妻一区二区三区香蕉 | 99久久777色| 91免费国产网站| 中文字幕一区二区三区人妻四季| 夜夜夜久久久| 欧美精品videos另类日本| 午夜国产小视频| 成人影视亚洲图片在线| 国产午夜精品麻豆| 亚洲天堂美女视频| 国产精品自在| 精品日韩欧美一区二区| 国产不卡的av| 91丨精品丨国产| 欧美性一级生活| 无码内射中文字幕岛国片| 日韩理论视频| 黑人巨大精品欧美一区免费视频| www污在线观看| 亚洲七七久久综合桃花剧情介绍| 亚洲欧美一区二区视频| 亚洲午夜在线观看| 日本在线免费| 《视频一区视频二区| 亚洲一区二区三区免费看| 99re在线视频| 成人欧美一区二区三区小说| 天天好比中文综合网| 超碰国产在线| 成人欧美一区二区三区白人| 好色先生视频污| 成码无人av片在线观看网站| 自拍偷拍亚洲欧美日韩| 国产av第一区| 免费不卡av| 欧美日韩亚洲精品内裤| 精品99在线视频| 免费高清视频在线一区| 欧美日韩不卡在线| 日本中文字幕在线不卡| 91综合久久爱com| 精品伦理精品一区| 风间由美一二三区av片| 国内成人自拍| 久久精品美女视频网站| 欧美爱爱小视频| 一道本一区二区| 国产精品九九久久久久久久| 国产又粗又长视频| 成人动漫中文字幕| 青青草成人激情在线| 黄色片网站在线观看| 亚洲一二三区在线观看| 日本在线视频www| 成人在线黄色| 精品福利一二区| 国产在线观看h| 亚洲最新色图| 欧美一级淫片videoshd| 国产一区二区三区三州| 成人av资源在线| 亚洲国产成人不卡| bl在线肉h视频大尺度| 91国产精品成人| 欧美xxxx黑人| 国产成人精品免费视| 欧美超级免费视 在线| 日韩美女一级片| 麻豆专区一区二区三区四区五区| 国产精品免费一区二区| 福利成人在线观看| 亚洲成人免费电影| 涩涩网站在线看| 欧美爱爱网站| 蜜月aⅴ免费一区二区三区| 免费观看成人毛片| 国产乱理伦片在线观看夜一区| 精品久久一区二区三区蜜桃| 99青草视频在线播放视| 午夜精品一区二区三区电影天堂| 性chinese极品按摩| 日韩mv欧美mv国产网站| 久热爱精品视频线路一| 欧美成人一区二区三区四区| 国产91富婆露脸刺激对白| 香蕉久久夜色| 亚洲天堂手机| 亚洲成avwww人| 黄色录像免费观看| 日韩不卡一二三区| 精品网站在线看| 亚洲婷婷噜噜| 欧美二区在线观看| 老司机福利在线观看| 国产一区白浆| 国产精品久久久久久久久久直播 | 欧美老女人在线视频| 成人免费一级片| www日韩大片| 日韩黄色短视频| 精品成人18| 日韩一区av在线| 久久久久久av无码免费看大片| 99r精品视频| 精品国偷自产一区二区三区| 欧美午夜在线播放| 日韩视频永久免费观看| 中文字幕乱码在线观看| 亚洲国产成人自拍| 国产熟人av一二三区| 亚瑟一区二区三区四区| 97人人做人人爱| 婷婷五月综合激情| 午夜精品久久久| 在线视频 日韩| 亚洲激情偷拍| 久久精品女人的天堂av| 深夜成人在线| 亚洲精品一区在线观看香蕉| 影音先锋亚洲天堂| 91蜜桃婷婷狠狠久久综合9色| 国产一区二区视频播放| 久久中文字幕导航| 欧美中文字幕第一页| 欧美日韩国产综合视频 | 久久综合久久网| 亚洲一区二区三区日本久久九| 久久6精品影院| 黄色www视频| 黄色成人av在线| 18禁裸乳无遮挡啪啪无码免费| 亚洲在线日韩| 视频一区二区三| 亚洲精品69| 欧美大片欧美激情性色a∨久久| 国产区精品在线| 亚洲一区二区不卡免费| 中国一级特黄录像播放| 亚洲在线一区| 亚洲欧美日韩不卡一区二区三区| 亚州欧美在线| 欧美激情综合色| 天天av综合网| 欧美福利视频一区| 久久精品视频久久| 91美女蜜桃在线| 中文字幕丰满乱码| 亚洲精品乱码久久久久久蜜桃麻豆| 精品国产aⅴ麻豆| 性高爱久久久久久久久| 久久精品电影网| 天天干天天草天天射| 91官网在线观看| 青草影院在线观看| 99久久亚洲一区二区三区青草| 99久久久无码国产精品6| 国产精品久久久久久久| 国产日韩二区| 美女视频一区| 777精品视频| 色影视在线观看| 精品成人私密视频| 久久国产香蕉视频| 亚洲成人免费视频| 久久av红桃一区二区禁漫| 成人三级伦理片| 天天爽夜夜爽一区二区三区| 国产综合久久| 西游记1978| 农村少妇一区二区三区四区五区| 国产精品免费久久久久影院| 欧美日韩经典丝袜| 伊人伊人伊人久久| 日本免费一区视频| 欧美片网站yy| 91视频免费网址| 一区二区三区日韩欧美精品| mm131丰满少妇人体欣赏图| 国产激情视频一区二区三区欧美| 99免费视频观看| 一区二区三区四区五区在线| 97超碰免费观看| 成人在线免费观看91| 国语精品免费视频| 免费一级欧美在线大片| 国产精品久久久久久搜索| av影片在线| 久久久国产一区| wwwxxx在线观看| 国产视频久久久久久久| 好吊色一区二区| 日韩欧美一级精品久久| 在线观看视频二区| 日本高清无吗v一区| 日韩特黄一级片| 亚洲一区在线播放| 国产盗摄一区二区三区在线| 亚洲欧洲日韩女同| 久久精品日韩无码| 国产精品私房写真福利视频| 精品无码人妻一区| 91网站黄www| xxxwww国产| 成人免费av网站| 久久久久国产免费| 成人妖精视频yjsp地址| 污免费在线观看| 国产米奇在线777精品观看| 欧美特级aaa| 日本特黄久久久高潮 | 国产精品一区二区不卡| 国产一二三区av| 日本欧美一区二区三区| 999精品网站| 日韩国产高清在线| 天天综合网日韩| 久久99久久久久| 91在线第一页| 国产成人av资源| 最新中文字幕日本| 不卡一区二区三区四区| chinese麻豆新拍video| 99国产精品国产精品毛片| 三叶草欧洲码在线| 久久久高清一区二区三区| 强伦人妻一区二区三区| 亚洲国产精品激情在线观看| 五月激情四射婷婷| 亚洲色图制服丝袜| 欧美三级 欧美一级| 亚洲国产中文字幕在线视频综合| 五月天婷婷丁香| 大伊人狠狠躁夜夜躁av一区| 草久久免费视频| 在线视频观看一区| 伊人亚洲综合网| 欧美一级二级在线观看| 欧美视频一二区| 亚洲免费精彩视频| 午夜视频在线免费观看| 欧美另类99xxxxx| 在线天堂新版最新版在线8| 国产91免费看片| 日本久久二区| 国产日韩欧美一区二区| 精品盗摄女厕tp美女嘘嘘| 一区二区三区久久网| 午夜天堂精品久久久久| 欧美二区在线视频| 久久福利资源站| 成人欧美精品一区二区| 久久久国产一区二区三区四区小说| 成人18视频免费69| 亚洲国产一区二区在线播放| 天天干天天操天天爱| 欧美老女人在线| 天天躁日日躁狠狠躁伊人| 最近中文字幕2019免费| 女囚岛在线观看| 日韩暖暖在线视频| 日韩三级网址| 青青草成人网| 狠狠色丁香久久综合频道| 国产理论在线播放| 成人综合在线视频| 精品一区二区三孕妇视频| 亚洲一区二区三区美女| 九九热最新视频| 亚洲成年人影院在线| 98在线视频| 秋霞成人午夜鲁丝一区二区三区| 成人51免费| 欧美激情www| 国产一在线精品一区在线观看| 色综合天天色综合| 成人精品视频网站| 成人在线观看免费完整| 色视频成人在线观看免| 全部免费毛片在线播放一个| 日韩在线精品视频| 成人午夜视屏| 国产另类自拍| 欧美日韩一区自拍| 中文字幕 日韩 欧美| 久久精品男人的天堂| 日韩精品一区三区| 日韩欧美一二三区| 黄色免费在线看| 国产精品免费小视频| 亚洲男人都懂第一日本| av免费观看国产| 成人在线视频一区二区| 欧美做爰啪啪xxxⅹ性| 欧美日韩免费视频| 国产日本在线| 国产成人极品视频| 任你躁在线精品免费| 欧美精品久久久久久久久久久| 国产一区二区三区美女| 制服丨自拍丨欧美丨动漫丨| 欧美亚洲禁片免费| 福利小视频在线观看| 日本三级韩国三级久久| 欧美美女啪啪| 精品国产一二三四区| 99久久99久久精品免费看蜜桃| 国产一级做a爱免费视频| 精品少妇一区二区三区在线视频 | 亚洲欧美偷拍卡通变态| 一级做a爱片久久毛片| 色婷婷综合成人av| 色噜噜成人av在线| 中文字幕av导航| 久久99精品国产麻豆不卡| 日韩av片在线免费观看| 欧美日韩成人综合天天影院 | 国产欧美日韩一区二区三区四区| 国内精品在线观看视频| 99热国产精品| 国产精品777777| 亚洲视频视频在线| 成人看片网页| 亚洲一区二区精品在线观看| 蜜桃久久久久久久| 久久精品一区二区三区四区五区| 在线播放91灌醉迷j高跟美女| 激情视频在线观看| yellow视频在线观看一区二区| 激情综合激情| 亚洲专区区免费| 欧美日韩精品一区二区天天拍小说 | 日韩城人网站| 成年在线观看视频| 大桥未久av一区二区三区中文| 国产无套粉嫩白浆内谢| 日韩精品在线电影| 日本精品在线一区| 黄频视频在线观看| 不卡一区二区中文字幕| 久久午夜鲁丝片| 裸体女人亚洲精品一区| 岛国成人av| 成人免费视频久久| 亚洲欧美国产高清| 无码国产伦一区二区三区视频| 欧美最猛性xxxxx(亚洲精品)| 精品久久久久久久| 97超碰免费在线观看| 精品久久久一区| 最新电影电视剧在线观看免费观看| 91在线短视频| 久久香蕉精品| 欧美成人免费观看视频| 日韩精品极品毛片系列视频| 成人黄色免费观看| 欧美高清中文字幕| 国产欧美一区二区三区沐欲 | 玖玖精品在线| 成人免费视频91| 国产精品久久久久影视| 日韩一级中文字幕| 成人观看高清在线观看免费| 亚洲国产精品第一区二区| 我不卡一区二区| 亚洲第一级黄色片| 国产一区二区三区四区五区3d | 男女男精品网站| 免费毛片一区二区三区|