网站建设成都公司哪家好,游戏怎么做充值网站,上海设计招聘网站,乔拓云智能建站系统目录 一、软件介绍 二、技术框架 三、功能介绍 四、代码展示 1、获取数据库信息部分代码 2、导出Html文档代码 五、运行效果 六、项目开源地址 一、软件介绍 今天给大家分享我自己编写的数据库表结构文档生成工具#xff0c;方便大家在实际开发当中#xff0c;可以很方便导出… 目录 一、软件介绍 二、技术框架 三、功能介绍 四、代码展示 1、获取数据库信息部分代码 2、导出Html文档代码 五、运行效果 六、项目开源地址 一、软件介绍 今天给大家分享我自己编写的数据库表结构文档生成工具方便大家在实际开发当中可以很方便导出业务系统的表结构也可以作为项目验收文档中数据库设计文档使用。这样可以大大减少编写数据库表结构文档的时间有需要的朋友欢迎下载或者沟通交流 二、技术框架 编程语言C# Net Framework4.5.5数据库技术框架Dapper导出Word文档NPOI访问方式WinForm窗体应用程序Windows操作系统可以直接运行三、功能介绍 支持SQLServer、MySQL5.7、8.0、SQLite 三种类型的数据持续更新支持Word、Html、MarkDown 三种格式的导出导出内容包含数据表字段详情、字段注释、长度、默认值等、创建表脚本、视图及视图脚本、存储过程及脚本支持生成文档的同时直接打开文档支持数据库备份目前只支持SQLServer导出bak备份文件 四、代码展示 1、获取数据库信息部分代码 /// summary/// 获取数据库字符串/// /summary/// param nameservername/param/// param nameuid/param/// param namepwd/param/// param namedb/param/// returns/returnspublic 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 nameconStr/param/// returns/returnspublic Liststring GetDBNameList(string conStr){//ListDBName list new ListDBName();string sql select [name] from master.dbo.sysdatabases where DBId6 Order By [Name] ;try{using (SqlConnection connection new SqlConnection(conStr)){var list connection.Querystring(sql).ToList();return list;}}catch{return null;}}public ListDBModel GetDBList(string conStr){//ListDBName list new ListDBName();string sql select [name] from master.dbo.sysdatabases where DBId6 Order By [Name] ;try{using (SqlConnection connection new SqlConnection(conStr)){var list connection.QueryDBModel(sql).ToList();return list;}}catch{return null;}}/// summary/// 获取特定数据库的表名列表/// /summary/// param nameconStr/param/// returns/returnspublic ListTableModel GetDBTableList(string conStr, string dbName ){var list new ListTableModel();//string sql SELECT TABLE_NAME as name FROM INFORMATION_SCHEMA.TABLES where TABLE_TYPEBASE 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.QueryTableModel(sql).ToList();}}catch{}return list;}/// summary/// 获取特定数据库里面的存储过程/// /summary/// param nameconStr/param/// param namedb/param/// returns/returnspublic ListProcModel GetProcList(string conStr, string dbName ){var list new ListProcModel();string sql select name as procName, (select text from syscomments where idOBJECT_ID(name)) as proDerailsfrom dbo.sysobjects o where OBJECTPROPERTY(id, NIsProcedure) 1 order by name ;try{ using (SqlConnection connection new SqlConnection(conStr)){list connection.QueryProcModel(sql).ToList();}}catch{}return list;}/// summary/// 获取特定数据库里面的视图/// /summary/// param nameconStr/param/// param namedb/param/// returns/returnspublic ListViewModel GetViewList(string conStr, string dbName ){var list new ListViewModel();string sql select name as viewName, (select text from syscomments where idOBJECT_ID(name)) as viewDerailsfrom dbo.sysobjects o where OBJECTPROPERTY(id, NIsView) 1 order by name ;try{ using (SqlConnection connection new SqlConnection(conStr)){list connection.QueryViewModel(sql).ToList();}}catch{}return list;}/// summary/// 获取字段的信息/// /summary/// param nametableName/param/// param nameconStr/param/// returns/returnspublic ListTableDetail GetTableDetail(string tableName, string conStr, string dbName ){var list new ListTableDetail();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.QueryTableDetail(sb.ToString()).ToList();}}catch{ }return list;}2、导出Html文档代码 /// summary/// 生成html文件/// /summary/// param namelist/param/// param nameconStr/param/// param namedb/param/// param nametype/parampublic void CreateToHtml(ListTableModel list, string conStr, string db, int type, Liststring checkList){StringBuilder sb new StringBuilder();sb.Append(htmlmeta charset\utf-8\ /meta http-equiv \Content-Language\ content \zh-CN\ );sb.Append(headtitle数据库说明文档/titlebody);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/headbody);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序号/thth字段名称/thth标识/thth主键/thth字段类型/thth字段长度/thth允许空值/thth字段默认值/thth字段备注/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 建表脚本/h4br/);sb.Append(span service.GetTableSQL(item.tableName, conStr) /span);}}}#endregion#region 存储过程if (checkList.Where(m m.Equals(存储过程)).Count() 0){ListProcModel proclist new ListProcModel();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){ListViewModel viewlist new ListViewModel();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);}}}#endregionsb.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数据库备份 六、项目开源地址 GitHubhttps://github.com/hgmsq/SqlToDocTool Giteehttps://gitee.com/hgm1989/SqlToDocTool Gitcodehttps://gitcode.net/xishining/SqlToDocTool